[bcb]我有兩個form表單請問要如何在form1知道我是點了那一個button |
|
dragonhippop
一般會員 發表:5 回覆:0 積分:1 註冊:2004-12-26 發送簡訊給我 |
|
jorping
一般會員 發表:3 回覆:5 積分:1 註冊:2006-11-15 發送簡訊給我 |
|
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
Form1 程式
[code] unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses Unit2; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Form2.Show; if Form2.Button1.Enabled=False then Memo1.Lines.Add('Button1 is clicked !'); if Form2.Button2.Enabled=False then Memo1.Lines.Add('Button2 is clicked !'); end; procedure TForm1.FormCreate(Sender: TObject); begin Memo1.Clear; Button1.Caption := 'Button Status Check'; end; end. [/code] Form2 程式 [code] unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm2 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); begin Button1.Enabled:=False; end; procedure TForm2.Button2Click(Sender: TObject); begin Button2.Enabled:=False; end; end. [/code]
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
CoffeeX
中階會員 發表:18 回覆:121 積分:72 註冊:2005-02-18 發送簡訊給我 |
如果只是要僅一個按下去的作法應該有兩種比較簡單的,
其一可以利用BCB元件SpeedButton去測試看看 另外也可以自己寫, 這是實現2樓大大的作法: Unit1.cpp void __fastcall TForm1::Button1Click(TObject *Sender) { Form2->Show(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { int UsedButton; UsedButton = Form2->ButtonFlagCheck(); if(UsedButton >=0 ) { ShowMessage("Form2's Button" IntToStr(UsedButton)); }else{ ShowMessage("None"); } } //--------------------------------------------------------------------------- Unit2.h & .cpp class TForm2 : public TForm { __published: // IDE-managed Components TButton *Button1; TButton *Button2; void __fastcall Button1Click(TObject *Sender); void __fastcall Button2Click(TObject *Sender); private: // User declarations bool ButtonFlag[2]; int ButtonCount; void ButtonFlagInitial(); public: // User declarations __fastcall TForm2(TComponent* Owner); int ButtonFlagCheck(); }; //--------------------------------------------------------------------------- __fastcall TForm2::TForm2(TComponent* Owner) : TForm(Owner) { ButtonCount = 2; ButtonFlagInitial(); } //--------------------------------------------------------------------------- void TForm2::ButtonFlagInitial() { for(int i=0;i<ButtonCount;i )<br /> { ButtonFlag[i] = false; } } //--------------------------------------------------------------------------- int TForm2::ButtonFlagCheck() { int Index = -1;//if None for(int i=0;i<ButtonCount;i )<br /> { if(ButtonFlag[i]) { Index = i 1;//0:Button1,1:Button2 } } return Index; } //--------------------------------------------------------------------------- void __fastcall TForm2::Button1Click(TObject *Sender) { ButtonFlagInitial(); ButtonFlag[0] = true; } //--------------------------------------------------------------------------- void __fastcall TForm2::Button2Click(TObject *Sender) { ButtonFlagInitial(); ButtonFlag[1] = true; }
------
=.=??? |
Coffee
版主 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
procedure TForm1.FormClick(Sender: TObject);
begin if (Sender is TComponent) then Caption:=(Sender as Tcomponent).Name 'is clicked'; end; procedure TForm1.Button1Click(Sender: TObject); var frm2 : TForm2; begin frm2:=TForm2.Create(self); frm2.Button1.On Click:=self.FormClick; frm2.Button2.On Click:=self.FormClick; frm2.ShowModal; end; //這樣如何 //把self改成this指標,Instance Property operator改成->,as的typecast改用TComponent(Sender)就好..
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。 為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。 在引述到我的文時自然會儘量替各位想辦法,謝謝大家! |
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
|
Coffee
版主 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |