如何動態呼叫function or procedure |
尚未結案
|
ystzou
一般會員 發表:2 回覆:2 積分:0 註冊:2003-10-21 發送簡訊給我 |
|
pgdennis
資深會員 發表:41 回覆:526 積分:443 註冊:2002-05-23 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
ystzou 你好: 範例如下, 參考看看 :
type TMyPorcdure = procedure (Sender: TObject) of Object; TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); Procedure P1(Sender: TObject); Procedure P2(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} { TForm1 } procedure TForm1.P1(Sender: TObject); begin showmessage('In P1 Procedure'); end; procedure TForm1.P2(Sender: TObject); begin showmessage('In P2 Procedure'); end; procedure TForm1.Button1Click(Sender: TObject); var m : TMyPorcdure; s : string; p : Pointer; begin s := 'P1'; p := MethodAddress(s); if p<>nil then begin TMethod(m).Code := p; TMethod(m).Data := Self; m(Sender); end else raise Exception.CreateFmt('Procedure %s not exists',[s]); s := 'P2'; p := MethodAddress(s); if p<>nil then begin TMethod(m).Code := p; TMethod(m).Data := Self; m(Sender); end else raise Exception.CreateFmt('Procedure %s not exists',[s]); end;啊...pgdennis已經回了...慢了一步...... 發表人 - |
ystzou
一般會員 發表:2 回覆:2 積分:0 註冊:2003-10-21 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |