全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:849
推到 Plurk!
推到 Facebook!

How to assign different procedure to OnClick event

尚未結案
kylixyao
一般會員


發表:10
回覆:11
積分:4
註冊:2003-11-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-06 15:00:21 IP:202.110.xxx.xxx 未訂閱
Procedure proc1; begin do something; end; procedure proc2; begin do something; end; I want to assign these two different procedure to a button's OnClick event according some value,such as following pesudo code: if flag=10 then button1.proc1 else button1.proc2; who can tell me how to write the right code? thanks.
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-06 15:12:56 IP:147.8.xxx.xxx 未訂閱
You need a TNotifyEvent, not a procedure....    
type
    TMyClass = class
        class procedure proc1(Sender: TObject);
        class procedure proc2(Sender: TObject);
    end;    procecedure TMyClass.proc1(Sender:TObject);
begin
end;    procecedure TMyClass.proc2(Sender:TObject);
begin
end;
{.....}
if flag=10 then
    button1.OnClick := TMyClass.proc1 
else
    button1.OnClick := TMyClass.proc2;
發表人 - william 於 2004/02/06 15:13:31
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-06 15:14:33 IP:61.221.xxx.xxx 未訂閱
您好: 不好意思發表後才知重複了  
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  if flag=10 then
    proc1
  else proc2;
end;
~~應無所住而生其心~~ 發表人 - Terrychen 於 2004/02/06 15:15:40
kylixyao
一般會員


發表:10
回覆:11
積分:4
註冊:2003-11-20

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-06 15:27:01 IP:202.110.xxx.xxx 未訂閱
william, if I use code like this: procedure TForm1.button1OnClick(Sender:TObject); class procedure proc1(Sender: TObject); begin ... end; class procedure proc2(Sender: TObject); begin ... end; begin form2:=TForm2.create(application); if flag=10 then form2.button1.proc1 else form2.button1.proc2; form2.showmodal; form2.free; end; can the code compile or run right?
kylixyao
一般會員


發表:10
回覆:11
積分:4
註冊:2003-11-20

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-06 15:33:38 IP:202.110.xxx.xxx 未訂閱
I get "Incompatible type:method pointer and regular procedure". why?
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-02-06 15:53:17 IP:147.8.xxx.xxx 未訂閱
unit Unit1;    interface    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;    type
    TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
    private
    public
    end;        TMyClass = class
        class procedure proc1(Sender: TObject);
        class procedure proc2(Sender: TObject);
    end;    var
    Form1: TForm1;
    flag: integer;    implementation    uses Unit2;    {$R *.dfm}    { TMyClass }    class procedure TMyClass.proc1(Sender: TObject);
begin    end;    class procedure TMyClass.proc2(Sender: TObject);
begin    end;    procedure TForm1.Button1Click(Sender: TObject);
begin
    form2 := TForm2.create(self);
    if flag=10 then
        form2.button1.OnClick := TMyClass.proc1
    else
        form2.button1.OnClick := TMyClass.proc2;
    form2.showmodal;
    form2.free;
end;    end.
kylixyao
一般會員


發表:10
回覆:11
積分:4
註冊:2003-11-20

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-02-06 15:53:18 IP:202.110.xxx.xxx 未訂閱
here I must use nested local procedures and assign these procedure to OnClick event according to different flag values.
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-02-06 17:00:19 IP:147.8.xxx.xxx 未訂閱
No, you cannot use local procedures. You must either use a class procedure or an object's method.
系統時間:2024-05-07 21:27:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!