动态创建控件后如何访问他们 ( 积分: 50 )

  • 主题发起人 主题发起人 pub66cn
  • 开始时间 开始时间
P

pub66cn

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure Addpages;
var
list:Tstrings;
i:integer;
begin
list:=tstringlist.Create ;
main.Myinifile.ReadSection('Pages',list);
for i:=0 to list.Count -1 do
begin
main.ListPages:=TTabSheet.Create(main.PageControl2);
main.ListPages.Parent:=main.PageControl2;
main.ListPages.PageControl:=main.PageControl2;
main.ListPages.caption:=main.Myinifile.Readstring('Pages', list,'');
main.lv :=TListView.Create(main.ListView1);
main.lv.Parent :=main.ListPages;
main.lv.Name :='ListView'+inttostr(i);
main.lv.Align :=alclient;
main.lv.ViewStyle :=vsreport;
main.lv.Columns.Add.Caption :='学号;
main.lv.Columns[0].Width :=280;
main.lv.Columns.Add.Caption :='姓名;
main.lv.Columns[1].Width :=80;
main.lv.Columns.Add.Caption :='姓别;
main.lv.Columns[2].Width :=80;
main.lv.Columns.Add.Caption :='备注';
main.lv.Columns[3].Width :=139;
main.lv.Columns[3].AutoSize :=true;
main.lv.GridLines :=true;
main.lv.OnClick := main.LvClick;
动态创建多个PageControl页,每页都放有一个ListView1控件,创建完后应该怎么判断,我当前所选的是哪个ListView。该如何访问创建来的ListView?
 
LvClick事件里面
TListView(sender).***
就可以对被Click的那个ListView动粗了。
你也可以给每个ListView设置不同的Tag,Tag就是标签
 
使用控件数组即可
var
lv :array of TlistView;

创建后可用数组下标访问
 
可以把名称放到一个 TstringList里面,然后利用 TComponent.findcontrol ........
通过控件名称来控制嘛!
 
再问一下,如果用动态数组或TstringList去创建的话,虽不虽要释放?这问题好像在旧贴中争论的非常激烈而没明确答案
 
理论上是要释放的.
 
接受答案
 
最好是要释放!!这样比较好!
 
释放的方式,首先通知ower释放自己的信息,再释放自己拥有的资源,再释放自己.由create传入参数为nil的一定要自己释放;
可以用记录体记录多个组件之间的关系
 
后退
顶部