我是这样做的不行!
TYPE
   PFun=Procedure(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);var
  frmDrawMap: TfrmDrawMap;
  pDraw:PFunprocedure TfrmDrawMap.ChangePaint(var msg:TPTMsg);
begin
   if pt=ptselect then
      pDraw:=@Draw;end;错误报告叫我把参数都带上,可我只知道要调用这个函数,还不知道它的具体参数值是多少阿,该怎么办阿?

解决方案 »

  1.   

    pDraw(Draw)(参数列表)
    这是指针吗?
      

  2.   

    这个问题可以去问软件报的“心玲”老师。DELPHI函数的资料大多是英文的,我们看不懂
      

  3.   

    Draw的函数原型呢?需要注意的是,参数个数和类型必须是匹配的才可以。
      

  4.   

    改为这样:
    type
    PFun=Procedure(Button: TMouseButton; Shift: TShiftState; X, Y: Integer) of Object;否则的话,就算编译成功了,你乱调用pDraw也会导致堆栈的错误,而且每个参数的值都错位或者干脆是个不认识的了,因为你的声明无法传入self。
      

  5.   

    没看到你的Draw是怎么说明的无法判断,但要保证Draw的参数、调用协定和PFun说明的一致,而且Draw不是类成员函数,另外pDraw声明为过程类型而不是指针赋值的时候就不用加@,尽管它实际上还是指针。
      

  6.   

    draw的声明与函数指针的定一样,如下:
     private
        { Private declarations }
        procedure Draw(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    这个问题有点急,解决不了我就没法做了,感谢大家的帮助,我时时都在关注大家的留言,谢谢!!
      

  7.   

    同意 Eastunfail(浴血雏龙)==(恶鱼杀手)