-->



实例145 枚举窗体上的组件

本实例演示如何在程序运行过程中获得窗体上所有组件的名称和类名。

向窗体上添加一个TListView组件、一个TButton组件、一个TRadioButton组件和一个TListView组件,TListView组件用来显示窗体上所有组件名称和类名。添加组件后的窗体如图8-36所示。

8-36 添加组件后的窗体

TListView组件添加两列——ClassNameName,如图8-37所示。

8-37 设置TListView组件的属性

然后添加窗体初始化代码如下:

procedure TfrmMain.FormCreate(Sender: TObject);

var

ListItem:TListItem;

i:Integer;

begin

ListView1.ViewStyle:=vsReport;

for i:=0 to self.ComponentCount-1 do

begin

ListItem:=ListView1.Items.Add;

LIstItem.Caption:=self.Components[i].ClassName;

ListItem.SubItems.Add(self.Components[i].Name);

end;

end;

程序首先设置TListView组件的显示风格为vsReport,然后进入一个循环,窗体上的所有组件都存储在窗体的Components数组中,所以通过循环语句中的Components[i]就可以访问窗体上的各个组件,并且把组件的类名和名称显示在TListView组件中。

程序代码如下:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ComCtrls, StdCtrls;

type

TfrmMain = class(TForm)

ListView1: TListView;

Button1: TButton;

Memo1: TMemo;

RadioButton1: TRadioButton;

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

frmMain: TfrmMain;

implementation

{$R *.dfm}

procedure TfrmMain.FormCreate(Sender: TObject);

var

ListItem:TListItem;

i:Integer;

begin

ListView1.ViewStyle:=vsReport;

for i:=0 to self.ComponentCount-1 do

begin

ListItem:=ListView1.Items.Add;

LIstItem.Caption:=self.Components[i].ClassName;

ListItem.SubItems.Add(self.Components[i].Name);

end;

end;

end.

保存文件,然后按F9键运行程序,程序运行结果如图8-38所示。

8-38 程序运行结果