动态生成的panel如何写事件代码
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让其全变成红色
[解决办法]
最好先放个panel,然后事件生成代码。
写好测试好删除panel,留下代码。
用TPanel(sender).name或者tag区分之。
[解决办法]
所谓的“事件”,其实就是一个对象的方法,当要触发事件的时候,这个方法就会被调用,跟回调函数的原理是一样的。
所以只要你的方法的声明,和事件所声明的一样,就可以通过代码直接进行动态赋值
[解决办法]
TPanel提供了方法指针,你只要写好了赋值给它就好了
[解决办法]
// pan[x,y].OnClick := panClick;
可能是你没写panClick过程,按foxyy8888的,先放个panel,然后事件生成代码。写好测试好删除panel,留下代码。再用TPanel(sender).name或者tag区分之。