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"错误,请问为什么?  

解决方案 »

  1.   

    因为你的Showff函数原型与Button的OnClick的函数原型不同,你这种写法,相当于把字符型值赋给整型变量一样,当然就不能这样赋值了。
      

  2.   

    if   key='p'   then
            showmessage('fdddfd');
    输入的实际参数要与那个key的类型一样。
      

  3.   

    TO:chris_mao 
     那该如何修改呢?谢了
      

  4.   

    procedure   Tform1.showff(sender: TObject);
    var
      key: integer;
    begin
      key := TWinControl(sender).tag;
      if key=1 then
        showmessage('FFFFFFFFFFFFFFFFFFFFFFF');
      ...
    end;
      

  5.   

    在对象的tag域里传
    比如,button1.tag域。 
    button1.tag := 1;
      

  6.   

    如果是整数型的参数,可以利用Button的Tag属性;procedure ShowFF(Sender: TObject);
    begin
      if TButton(Sender).Tag = 1 then
        //do something
      else if Chr(TButton(Sender).Tag) = 'P' then //Tag中是字母P的编码
        //do something
    end;button1.OnClick := ShowFF;