delphi CopyComponent动态复制控件组TabSheet,如何对对应的TabSheet组里的Memo进行操作?

lxdu120 2020-06-21 10:04:33
窗体里面有个 PageControl1.TabSheet1,里面有Memo,和Button
Button1的代码是:Memo1.Lines.Add('1111111');

我用 CopyComponent动态复制控件组PageControl1.TabSheet1
新复制出来的TabSheet(2)...TabSheet(N),里面也有Memo,和Button
现在的问题是,点新复制出来的Button,不会对对应的TabSheet里的Memo进行操作,还是对原来的TabSheet1里的Memo1.Lines.Add操作,Button的代码要怎么写才会对对应的TabSheet里的Memo进行操作?
求高手指点!!

var
a: TTabSheet;
i: integer;
begin
for i:= PageControl1.PageCount - 1 downto 1 do
PageControl1.Pages[i].Destroy;
for i:= 1 to SpinEdit2.Value - 1 do //复制数量
begin
RegisterClasses([TTabSheet, TMemo, tbutton, tpagecontrol, tmap]);
a := CopyComponent(TabSheet1, PageControl1, Self) as TTabSheet;
//a.Caption := inttostr( gettickcount );
a.Caption := Format('窗口%d', [i+1]);
UnRegisterClasses([TTabSheet, TMemo, tbutton, tpagecontrol, tmap]);
end;

以上代码复制出来TabSheet(2)...TabSheet(N),求对对应的TabSheet里的Memo进行操作
...全文
234 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxdu120 2020-06-24
  • 打赏
  • 举报
回复
引用 2 楼 tanqth 的回复:
给你一个思路:
先建一个共用的按钮处理过程,这个过程里就完成你Memo1.Lines.Add('1111111');的工作,但不是Memo1.Lines.Add('1111111');。(请注意这个过程很重要)过程里第一步是以查找自己的父级控件TTabSheet,然后查找TTabSheet下的TMemo,然后针对这个TMemo完成操作。

然后是,当完成复制时,去把按钮的事件指向到刚刚建的那个共用处理过程。



有代码示例吗?最好delphi的
zjg_1108 2020-06-24
  • 打赏
  • 举报
回复
单独定义一个指针过程,动态的给每个产生出来的button的单击事件赋值。
秋天之落叶 2020-06-24
  • 打赏
  • 举报
回复
在容器中复制粘贴控件要注意粘贴到了什么位置,粘贴到哪里记得把那里变为焦点,否则乱七八糟的,我就这样用过且很受伤。
tanqth 2020-06-22
  • 打赏
  • 举报
回复
给你一个思路: 先建一个共用的按钮处理过程,这个过程里就完成你Memo1.Lines.Add('1111111');的工作,但不是Memo1.Lines.Add('1111111');。(请注意这个过程很重要)过程里第一步是以查找自己的父级控件TTabSheet,然后查找TTabSheet下的TMemo,然后针对这个TMemo完成操作。 然后是,当完成复制时,去把按钮的事件指向到刚刚建的那个共用处理过程。
  • 打赏
  • 举报
回复
复制出来的memo的名字也不叫memo1,你的处理代码是Memo1.Lines.Add('1111111');当然不会显示在其他memo中了

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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