一个动态创建组件的问题:在Form上放一个Button,Click后动态生成一个相同的Button,出现在原先Button的右下角,且具有与原先Button同样

du007 2004-11-06 11:59:18
如题,能解决者,分都给他!代码应严格按照书写规范写出来。
...全文
133 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
surpassable 2004-11-11
  • 打赏
  • 举报
回复
学习~~
du007 2004-11-07
  • 打赏
  • 举报
回复
楼上的,你回答的不对,这样做最多只能生成两个Button,第三—第N个Button生不出来,不信你上机试试。真怀疑你四个角是怎么偷来的!还有,最后一句,你怎么能写成
Btn.onclick = Button.onclick,应改为:Btn.onclick := Button.onclick

王集鹄 2004-11-07
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
{$J+}
const vButton: TButton = nil;
{$J-}
begin
if not Assigned(vButton) then TObject(vButton) := Sender;
Sender := TButton.Create(Self);
TButton(Sender).Parent := Self;
TButton(Sender).Left := vButton.BoundsRect.Right;
TButton(Sender).Top := vButton.BoundsRect.Bottom;
TButton(Sender).OnClick := vButton.OnClick;
TButton(Sender).Caption := vButton.Caption;
TObject(vButton) := Sender;
end;
wujunwei 2004-11-07
  • 打赏
  • 举报
回复
var Btn:TButton;
begin
Btn:=TButton.create(Form1);
Btn.parent:=Form1;
Btn.top:=Button.top+button.height;
Btn.left:=Button.left+Button.height;
Btn.onclick = Button.onclick
end;
waterflier 2004-11-07
  • 打赏
  • 举报
回复
存储一个lastButton..这个想想就该知道的.
知道
Btn:=TButton.create(Form1);和Btn.onclick := Button.onclick就可以了
bxcs 2004-11-07
  • 打赏
  • 举报
回复
这个问题我也在考虑,这是一个组件克隆的问题
可采用Prototype模式解决,但是更深层的问题还是需要自己考虑,给你个链接学习一下吧:
http://www.delphibbs.com/keylife/iblog_show.asp?xid=2547

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧