如何定位动态创建的对象?(50分)

  • 主题发起人 主题发起人 luogt
  • 开始时间 开始时间
L

luogt

Unregistered / Unconfirmed
GUEST, unregistred user!
各位delphi高手:
我现在在用delphi做开发,遇到一个问题,具体如下:
在一个Panel上动态创建对象,例如:TLabel、TCheckBox、Tbutton等等,具体代码是
TLabel.Create(nil)......,假设我要在button按扭上访问动态创建的Checkbox对象,我就
不知道该如何访问它?
在此敬请指点指点!
 
创建时:
TCheckBox.Create(self);
CheckBox.parent:=panel;
然后访问:
for i:=0 to panel.controlcount-1 do
if panel.controls is tcheckbox then
(panel.control as tcheckbox).checked:=true;
 
with TCheckBox.Create(self) do
begin
CheckBox.parent:=panel;
CheckBox.Name :='mycheckBox'
end;
with Panel.findcomponent('mycheckBox') as TCheckBox do
Check := true
 
楼主的意思可能是这个Button按钮也是动态建立的,然后点这个按钮控制checkobx吧?
如果是这样还要加点东西
先定义一个过程procedure myclick(sender:Tobject)

然后在button的创新时加上一句:
mybutton:=Tbutton.create(self);
mybutton.parent:=panel;
---------
-------
mybutton.onclick:=myclick;
end;

procedure myclick(sender:Tobject);
begin
//此处写楼上的代码
end;
 
请问yaoluo:
with TCheckBox.Create(self) do
begin
CheckBox.parent:=panel;
CheckBox.Name :='mycheckBox'
end;
with Panel.findcomponent('mycheckBox') as TCheckBox do
Check := true

上面这段代码,CheckBox是怎么得来的?以及 with Panel.findcomponent('mycheckBox') as TCheckBox do
Check := true在运行出现地址错误,是什么原因?
 
//创建代码
with TCheckBox.Create(self) do //AOwner参数的作用,你看一下TComponent的Create代码就知道了
begin
parent:=Panel1;
Name :='mycheckBox'; //注意:名称不能重复
end;
//取得控件句柄
with findcomponent('mycheckBox') as TCheckBox do
Begin
//编写代码...
end;

 
后退
顶部