whats new ¦  programming tips ¦  indy articles ¦  intraweb articles ¦  informations ¦  links ¦  interviews
 misc ¦  tutorials ¦  Add&Win Game

Tips (1541)

Database (90)
Files (137)
Forms (107)
Graphic (114)
IDE (21)
Indy (5)
Internet / LAN (130)
IntraWeb (0)
Math (76)
Misc (126)
Multimedia (45)
Objects/
ActiveX (51)

OpenTools API (3)
Printing (35)
Strings (83)
System (266)
VCL (242)

Top15

Tips sort by
component


Search Tip

Add new Tip

Add&Win Game

Advertising

56 Visitors Online


 
...Show a TRadioButtons in a TListView?
Autor: Opa
[ Print tip ]  

Tip Rating (3):  
     


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 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.

 

Rate this tip:

poor
very good


Copyright © by SwissDelphiCenter.ch
All trademarks are the sole property of their respective owners