Code: |
unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls;
type TMain = class(TForm) ListView1: TListView; Button1: TButton; Button2: TButton; procedure FormCreate(Sender : TObject); procedure FormDestroy(Sender : TObject); procedure Button1Click(Sender : TObject); procedure Button2Click(Sender : TObject); private ListViewRadioList: TList; procedure ListViewRadioCreate(List : TListView; R : TRect); procedure ListViewRadioClear(List : TListView; Liste : TList); procedure ListViewRadioFree(List : TListView; Liste : TList); procedure ListViewListSelected(Item : integer; List : TListView); procedure ListViewRadioClick(Sender : TObject); public { Public-Deklarationen } end;
var Main : TMain;
implementation
{$R *.DFM}
procedure TMain.FormCreate(Sender : TObject); begin ListViewRadioList := TList.Create; end;
procedure TMain.FormDestroy(Sender : TObject); begin ListViewRadioFree(ListView1, ListViewRadioList); end;
procedure TMain.Button1Click(Sender : TObject); var R : TRect; NewColumn : TListColumn; ListItem : TListItem; I : integer; begin with ListView1 do begin ViewStyle := vsReport; Align := alLeft; RowSelect := True; ReadOnly := True; ShowColumnHeaders := False; NewColumn := Columns.Add; NewColumn.Width := 15; NewColumn := Columns.Add; NewColumn.Width := Width - 15 - 19; // - breite Button - breite vom Scrollbalken Items.BeginUpdate;
for I := 0 to 9 do begin ListItem := Items.Add; R := Items[I].DisplayRect(drBounds); R.Left := 1; R.Right := Columns[0].Width; ListViewRadioCreate(ListView1, R); Items[I].Data := TRadioButton(ListViewRadioList[I]); ListItem.SubItems.Add('Test' + IntToStr(I)); end; Items.EndUpdate; end; end;
procedure TMain.Button2Click(Sender : TObject); begin ListViewRadioClear(ListView1, ListViewRadioList); end; //------------------------------------------------------------------------------
procedure TMain.ListViewRadioCreate(List : TListView; R : TRect); function NewViewRadio: TRadioButton; begin Result := TRadioButton.Create(Self); Result.Parent := List; Result.BoundsRect := R; Result.OnClick := ListViewRadioClick; end; begin ListViewRadioList.Add(NewViewRadio); end; //------------------------------------------------------------------------------
procedure TMain.ListViewRadioFree(List : TListView; Liste : TList); var I : integer; begin if Liste.Count - 1 < 0 then exit; for I := 0 to Liste.Count - 1 do TRadioButton(Liste[I]).Free; Liste.Free; end; //------------------------------------------------------------------------------
procedure TMain.ListViewRadioClear(List : TListView; Liste : TList); var I : integer; begin if Liste.Count - 1 < 0 then exit; List.Items.BeginUpdate; for I := 0 to Liste.Count - 1 do TRadioButton(Liste[I]).Free; List.Items.Clear; Liste.Clear; List.Items.EndUpdate; end; //------------------------------------------------------------------------------
procedure TMain.ListViewListSelected(Item : integer; List : TListView); begin with List do begin try SetFocus; except end; Selected := Items[Item]; ItemFocused := Selected; end; end;
//------------------------------------------------------------------------------ procedure TMain.ListViewRadioClick(Sender : TObject); var I : integer; begin for I := 0 to ListViewRadioList.Count - 1 do if TRadioButton(ListViewRadioList[I]).Checked then begin ListViewListSelected(I, ListView1); break; end; end;
end. |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!