怎样判断控件是否存在(100分)

  • 主题发起人 主题发起人 masks
  • 开始时间 开始时间
M

masks

Unregistered / Unconfirmed
GUEST, unregistred user!
对于一个TListBox如 ListBox1 我可以用FindComponent('ListBox1')来判断它是否存在,
也可以这样指定它:AListBox:=TListBox(FindComponent('ListBox1'));
我动态创建一个AList:TStringList; 该如何进行类似TListBox 的操作?
各位大侠能不能帮帮我.
 
不可能的,从继承的角度来看对TListBox的操作与TStringList是不相同的。
如果你需要,可以先创建一个TStringLsit,再把后创建的TStringLsit加入到前面的TStringList进行操作。
AllStringList.AddObject('Name', ATStringList);
如果使Name唯一,就可以通过TStringLsit.Find方法来查找这个对象。看看delphi的帮助。
 
用这一句看看:

Component.Findcomponent('Alist.Name') as TstringList;
 
可以这样:
for i := 0 to ConponentCount-1 do
if Conponents is TListBox theen
if TConponent(Conponents).Name =Name then
begin
Result := True;
exit;
end;

ConponentCount可以是全局的也可以是谋格容器的。
TstringLIst 与TListBox不同,不能进行类比,变通的方式很多建议封装Tstringlist使它具有TListBox的功能。

 
同意楼上的说法!
 
to BrandBoy:
你的方法实际上和FindComponent('ListBox1')类似;
动态指定TStringList 我已经实现了;不过走了不少弯路;如下:
先定义: ArrayList: Array [0..n] of TStringList;
AList: TStringList;
在OnCreate里: For I:=0 to n do
ArrayList.Create;
然后: For I:=0 to n do
begin
if ArrayList=Nil then 不存在
else AList:=ArrayList;
end;
大家还有没不同意见,我将结束问题.
 
AllStringList := TStringList.Create; //全局变量

procedure TForm1.FormCreate(Sender: TObject);
var
TempStringList: TStringList;
i:integer;
begin
for i := 0 to Count do
begin
TempStringList := TStringList.Create;
AllStringList.AddObject(IntToStr(i), ATStringList);
end;
end;

在使用时:
procedure TForm1.Button1Click(Sender: TObject);
var
Index:integer;
begin
if AllStringList.Find('Name', Index) then
begin
//做找到对象做的事
end;
end;
 
多谢各位。
 
后退
顶部