我动态建立一个按钮,然后定义其onclick=showff(1), showff定义如下: ( 积分: 100 )

  • 主题发起人 主题发起人 xy_c
  • 开始时间 开始时间
X

xy_c

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure Tform1.showff(var key:integer);
begin
if key=1 then
showmessage('FFFFFFFFFFFFFFFFFFFFFFF');
if key='p' then
showmessage('fdddfd');
end;
procedure TForm1.DBGrid1EditButtonClick(Sender: TObject);
begin
showmessage('ffffffffffffff');
end;
然后在编译时提示"Types of actual and formal var parameters must be identical"错误,请问为什么?
 
定义错了
要按按钮的事件参数声明。你自己随意定的参数和其不匹配。
Showff(Sender:TObjectJ);这样的声明。至于你想传进去的值,可以设置到tag中。
procedure Tform1.showff(Sender:TObject);
begin
if TWinControl(Sender).tag=1 then
showmessage('FFFFFFFFFFFFFFFFFFFFFFF');
if TWinControl(Sender).tag=ord('p') then
showmessage('fdddfd');
end;
 
(var key:integer) <> (Sender: TObject)
 
procedure Tform1.showff(var key:integer);
begin
if key=1 then
showmessage('FFFFFFFFFFFFFFFFFFFFFFF');
if key='p' then //这个类型不符,应该是打错了吧
showmessage('fdddfd');
end;
procedure TForm1.DBGrid1EditButtonClick(Sender: TObject);
begin
showmessage('ffffffffffffff')
//这是什么呢,这个没问题啊,显示一个提示框,可能是这样吧
end;
procedure TForm1.DBGrid1EditButtonClick(Sender: TObject);
begin
showmff('ffffffffffffff')
//这里'ffffffffffffff'是个常量,不能用于你定义的var Key,并且你定义的Key为Integer,而'ffffffffffffff'为string,类型也不兼容
end;
这样调用就OK了
procedure TForm1.DBGrid1EditButtonClick(Sender: TObject);
var
AKey: Integer;
begin
AKey := 1
//当然也可以是其它值
showmff(AKey);
end;
 
一个字:“乱”
 
你关键是想让动态创建的控件 指定一个事件.该事件是设定好的过程. 那其参数一定要一致.
其它的你自己写吧.乱
 
后退
顶部