解决方案 »

  1.   

    N.onClick:=类名.MethodAddress('XXX');
    XXX函数得放published
    xx.Fieldbyname('Field1').Value:=MethodName(@类名.XXX);
      

  2.   

    program Project1;{$APPTYPE CONSOLE}uses
      SysUtils;type
    TEventClass = class
      private
        FContent: string;
      public
        constructor Create();
    published
    procedure xxx;
    end;  TOnEvent = procedure () of object;constructor TEventClass.Create;
    begin
      FContent := 'xxx';
    end;procedure TEventClass.xxx();
    begin
      Writeln('I am ' + FContent);
    end;var
      xxx_ptr: Pointer;
      x: TOnEvent;
      ec: TEventClass;
    begin
      ec := TEventClass.Create;
      xxx_ptr := TEventClass.MethodAddress('XXX');
    Writeln(IntToHex(Cardinal(xxx_ptr),8));
      TMethod(x).Code := xxx_ptr;
      TMethod(x).Data := ec;
      x();
      Writeln(TEventClass.MethodName(xxx_ptr));
    end.
      

  3.   

    建议你修正设计思路。有成熟EXE+DLL分模块开发框架,提供有偿服务。QQ:188136923.
      

  4.   

    old.onclick :=youclick;
    ……
    procedure youclick;
    begin
      case keyword of
    ………
    end;
      

  5.   

    问题解决了,现在才来结贴,不好意思。谢谢 pathletboy 你的方法完全可行。分全给你。