unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, MapObjects2_TLB, StdCtrls;type
  TForm1 = class(TForm)
    Map1: TMap;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;  //TRenderEvent = procedure(var Map: TMap) of object;  TTest = class
  private
    //FRE: TRenderEvent;
    Ftt: TNotifyEvent;
  published
    //property OnRender: TRenderEvent read FRE write FRE;
    property OnTT: TNotifyEvent read Ftt write Ftt;
  end;
  TTestProc = class
  public
    //class procedure draw(var Map: TMap);
    class procedure ttProc(Sender: TObject);
  end;
var
  Form1: TForm1;implementation{$R *.dfm}//class procedure TTestProc.draw(var Map: TMap);
//begin
//end;
class procedure TTestProc.ttProc(Sender: TObject);
begin
end;procedure TForm1.Button1Click(Sender: TObject);
var
  tst: TTest;
begin
  tst:= TTest.Create;
  tst.OnTT:= TTestProc.ttProc(nil); // 这里赋值出现“incompatible types...”
  //tst.OnRender:= TTestProc.draw(Map1);
end;

解决方案 »

  1.   

    你的定法是錯誤的!!不能= 一個 class 方法
      

  2.   

    不用class proc 静态函数还是有一样的问题嘛
      

  3.   

    tst.OnTT:= TTestProc.ttProc(nil); // 这里赋值出现“incompatible types...”
    应该写成
    tst.OnTT:= TTestProc.ttProc; 
    To aiirii(ari-爱的眼睛)
    = 一個 class 方法  是允许的!
      

  4.   

    tst.OnTT := TTestProc.draw //不能是类方法,而且后面不要加参数