procedure TForm1.BitBtn1Click(Sender: TObject); var bb:TPanel; begin bb:=TPanel.Create(self); bb.Parent := Form1 ; bb.Name :='bb'; bb.Caption :='创建按钮'; bb.OnClick := myClick; end;procedure TForm1.myClick(Sender: TObject); begin showmessage('Hello'); end;
procedure TForm1.mypanelClick(Sender: TObject); begin if sender is mypanel[1] then tscout.SendPacket(Sender,'panel1'); if sender is mypanel[2] then tscout.SendPacket(Sender,'panel2); end; mypanel[i].OnClick:=Panel1Click;
OnClick是一个函数指针,你需要按他的参数格式设计的函数才行。
具体格式你copy一个函数头,然后自己改改名称就行了。
mypanel[i].OnClick:=SendPaket(senddom:string);
还是编译不过,但是下面的是可以的,为什么我的函数不行呢?
mypanel[i].OnClick:=button1click
procedure tscout.SendPacket(Sender: TObject;senddom:string);
begin
。。
。。
showmessage(senddom);
end;
调用:
mypanel[i].OnClick:=sendpacket(dom[i]);
还是没有对,为什么?
procedure Panel1Click(Sender: TObject);
procedure TForm1.Panel1Click(Sender: TObject);
begin
showmessage('aaa');
end;mypanel[i].OnClick:=Panel1Click;
但我想实现的是它直接调用我的一个函数
procedure tscout.SendPacket(Sender: TObject;senddom:string);
var
bb:TPanel;
begin
bb:=TPanel.Create(self);
bb.Parent := Form1 ;
bb.Name :='bb';
bb.Caption :='创建按钮';
bb.OnClick := myClick;
end;procedure TForm1.myClick(Sender: TObject);
begin
showmessage('Hello');
end;
begin
if sender is mypanel[1] then
tscout.SendPacket(Sender,'panel1');
if sender is mypanel[2] then
tscout.SendPacket(Sender,'panel2);
end;
mypanel[i].OnClick:=Panel1Click;
procedure tscout.SendPacket(Sender: TObject;senddom:string);
mypanel[i].OnClick:=sendpacket(dom[i]);
这句话有问题?那个Sender: TObject怎么表示呢?
procedure TForm1.Panel1Click(Sender: TObject);
begin
sendpacket(dom[i]);
end;mypanel[i].OnClick:=Panel1Click;