unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TMyMethod = procedure of object;
TForm1 = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
private
procedure Method1;
{ Private declarations }
protected
procedure Method2;
public
procedure ShowMethodName(aMethod: TMyMethod);
procedure Method3;
{ Public declarations }
published
procedure Method4;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ShowMethodName(aMethod: TMyMethod);
begin
ShowMessage( MethodName( @aMethod ) );
end;
procedure TForm1.Method1;
begin
end;
procedure TForm1.Method2;
begin
end;
procedure TForm1.Method3;
begin
end;
procedure TForm1.Method4;
begin
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ShowMethodName( Method1 );
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
ShowMethodName( Method2 );
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
ShowMethodName( Method3 );
end;
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
ShowMethodName( Method4 );
end;
end.
위의 소스는 단순히 현재 실행될 method name를 출력하고자 하는 내용입니다.
그런데 method의 속성이 published로 선언되어 있지 않으면 methodname 함수를 사용해서는
methodname을 구하지를 못하고 있습니다.
혹시 published 가 아닌 method의 이름을 구할 수 있는 방법을 알고 계신분은 도움 주시기 바랍니다.
즐프하세요..
이름을 얻어내는 방법은 없는것으로 알고 있습니다. 참고하시기 바랍니다.