动态生成的panel如何写事件代码

minipig520 2011-09-05 02:46:33
procedure TForm1.Button2Click(Sender: TObject);
var
pan: array of array of Tpanel;
x,y,m,n: integer;
begin
m := strtoint(edit1.Text); //行数
n := strtoint(edit2.Text); //列数
SetLength(pan,m);
for x := 0 to m-1 do
begin
SetLength(pan[x],n);
for y := 0 to n-1 do
begin
pan[x,y] := Tpanel.Create(self);
pan[x,y].parent := Panel2;
pan[x,y].Left := y*30;
pan[x,y].Top := x*30;
pan[x,y].Height := 30;
pan[x,y].Width := 30;
pan[x,y].Caption := inttostr(x) + '_' + inttostr(y);
pan[x,y].Color := clskyblue;
// pan[x,y].OnClick := panClick;

end;
end;

end;

比如让被选中的panel变成红色 还有就是用鼠标拖可以选择多个panel让其全变成红色
...全文
163 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
QQgenie 2011-11-08
  • 打赏
  • 举报
回复
// pan[x,y].OnClick := panClick;

可能是你没写panClick过程,按foxyy8888的,先放个panel,然后事件生成代码。写好测试好删除panel,留下代码。再用TPanel(sender).name或者tag区分之。
lhy 2011-11-08
  • 打赏
  • 举报
回复
在事件里遍历pan[x,y]数组,找出Sender是谁。

循环遍历数组,把pan[x,y]都释放。
rainychan2009 2011-09-14
  • 打赏
  • 举报
回复
TPanel提供了方法指针,你只要写好了赋值给它就好了
Harryfin 2011-09-14
  • 打赏
  • 举报
回复
所谓的“事件”,其实就是一个对象的方法,当要触发事件的时候,这个方法就会被调用,跟回调函数的原理是一样的。

所以只要你的方法的声明,和事件所声明的一样,就可以通过代码直接进行动态赋值
火龙岛主 2011-09-14
  • 打赏
  • 举报
回复
// pan[x,y].OnClick := panClick;有什么问题?
山东蓝鸟贵薪 2011-09-06
  • 打赏
  • 举报
回复
继续顶一下
dglife81 2011-09-06
  • 打赏
  • 举报
回复
先自定义事件,再赋给 panel 事件。
OO_is_just_P 2011-09-05
  • 打赏
  • 举报
回复
最好先放个panel,然后事件生成代码。
写好测试好删除panel,留下代码。

用TPanel(sender).name或者tag区分之。
minipig520 2011-09-05
  • 打赏
  • 举报
回复
人都哪去了~~~ 大虾们 帮帮手啊!!!!
minipig520 2011-09-05
  • 打赏
  • 举报
回复
自己UP下 求帮助!!!!!!
minipig520 2011-09-05
  • 打赏
  • 举报
回复
动态生成的panel的事件代码怎么写 比如用鼠标拖动选中的panel变成红色

追加一个问题用完之后在哪释放panel 因为我如果先生成是5*5的话 再想生成3*3的只会把原来生成的覆盖一部分
一剑飘雪 2011-09-05
  • 打赏
  • 举报
回复
有什么问题

16,748

社区成员

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

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