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.

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить