[求助]关于控件数组 。

cdisk 2008-07-03 03:43:14
我做了两个控件组 代码如下

SetLength(Btn,100);
SetLength(mmo,100);
a:=a+1;
Btn[a]:=TButton.Create(self);
Btn[a].Parent:=Self;
Btn[a].Caption:='111';
btn[a].Top:=a*50;
btn[a].OnClick:=btnClick;
mmo[a]:=TMemo.Create(self);
mmo[a].Parent:=Self;
mmo[a].Top:=a*40;
mmo[a].Left:=100;

如何让 btn
  • 按下的时候 对应的mmo
  • 有响应呢 。
...全文
45 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdisk 2008-07-03
  • 打赏
  • 举报
回复
wywry 方法挺好懂 。
Bear_hx 的没看懂了 。
cdisk 2008-07-03
  • 打赏
  • 举报
回复
我突然想到的办法 从外界传一个参数edt1.Text

t:='Bt'+edt1.Text;
m:='Mo'+edt1.Text;
SetLength(Btn,100);
SetLength(mmo,100);
a:=a+1;
Btn[a]:=TButton.Create(self);
Btn[a].Parent:=Self;
Btn[a].Caption:='111';
btn[a].Top:=a*50;
btn[a].OnClick:=btnClick;
Btn[a].Name:=t;
mmo[a]:=TMemo.Create(self);
mmo[a].Parent:=Self;
mmo[a].Top:=a*40;
mmo[a].Left:=100;
mmo[a].OnClick:=mmoClick;
mmo[a].Name:=m;
wywry 2008-07-03
  • 打赏
  • 举报
回复
如果Button与Memo对应,可以这样试试:


SetLength(Btn,100);
SetLength(mmo,100);
a:=a+1;
Btn[a]:=TButton.Create(self);
Btn[a].Parent:=Self;
Btn[a].Caption:='111';
btn[a].Top:=a*50;
btn[a].OnClick:=btnClick;
btn[a].Tag:=a; //关联一下
mmo[a]:=TMemo.Create(self);
mmo[a].Parent:=Self;
mmo[a].Top:=a*40;
mmo[a].Left:=100;

在BtnClick事件中写

if High(mmo)<Sender.Tag then exit; //判断是否越界
if Assigned(Mmo[Sender.Tag) then //如果存在,则
begin
with Mmo[Sender.Tag] do
begin
//进行处理
end;
end;

caize131 2008-07-03
  • 打赏
  • 举报
回复
tag里面写个值,然后点击的时候判断下就好....
Bear_hx 2008-07-03
  • 打赏
  • 举报
回复
你可以把Botton和Memo放在同一个结构体中,这样就可以了。
SetLength(Btnmmo,100);
a:=a+1;
Btnmmo[a].Button:=TButton.Create(self);
Btnmmo[a].Button.Parent:=Self;
Btnmmo[a].Button.Caption:='111';
Btnmmo[a].Button.Top:=a*50;
Btnmmo[a].Button.OnClick:=btnClick;
Btnmmo[a].Memo:=TMemo.Create(self);
Btnmmo[a].Memo.Parent:=Self;
Btnmmo[a].Memo.Top:=a*40;
Btnmmo[a].Memo.Left:=100;
cdisk 2008-07-03
  • 打赏
  • 举报
回复
....................

5,392

社区成员

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

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