想要在Unit2使用一個在Unit1宣告的參數之問題? |
答題得分者是:ikk
|
sunwingman
一般會員 發表:26 回覆:47 積分:14 註冊:2008-05-14 發送簡訊給我 |
我在Unit1.cpp中,宣告如下:
[code cpp] __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { abc = 100; } [/code] 整數abc是宣告在Unit1.h檔裡的Public中 然後,我新增一個Dialog,在Dialog中放上一個Button 接著在Button裡寫程式碼如下: [code cpp] void __fastcall TOKRightDlg::Button1Click(TObject *Sender) { TForm1 fr; def = fr.abc; ShowMessage(def); } [/code] 整數def也是宣告在Unit2.h檔裡的Public中 不過會出現下列錯誤: "VCL style classes must be constructed using operator new" 所以我把她改成如下: [code cpp] void __fastcall TOKRightDlg::Button1Click(TObject *Sender) { TForm1 *fr = new TForm1(); def = fr->abc; ShowMessage(def); } [/code] 不過還是會出現下列錯誤: " Could not find a match for 'TForm1::TForm1()' " 所以我又把她改成如下: [code cpp] void __fastcall TOKRightDlg::Button1Click(TObject *Sender) { TForm::TForm1 *fr = new TForm::TForm1(); def = fr->abc; ShowMessage(def); } [/code] 錯誤依然在,訊息如下: " Undefined symbol 'TForm1' " " Undefined symbol 'fr' " " Type name expected" " Statement missing; " 所以想上來請教大家一下要怎樣宣告才對? 我承認我物件導向的概念不是很好 所以請多多指教... |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
|
sunwingman
一般會員 發表:26 回覆:47 積分:14 註冊:2008-05-14 發送簡訊給我 |
|
ikk
尊榮會員 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
我已經試過是可以的,步驟如下:
(1)在 BCB 開發環境中,按「Project/Options/Forms」,確定「Form1」是「Main form」,「Form1」在「Auto create forms」欄位,「OKRightDlg」在「Available forms」欄位 (2)有關「Form1」的程式碼如下 [code cpp] // Unit1.h //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TButton *Button1; void __fastcall Button1Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); int abc; }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- // Unit1.cpp #include "Unit1.h" #include "Unit2.h" void __fastcall TForm1::Button1Click(TObject *Sender) { TOKRightDlg *dlg=new TOKRightDlg(Application); dlg->ShowModal(); delete dlg; } [/code] (3)有關「OKRightDlg」的程式碼如下 [code cpp] // Unit2.h //---------------------------------------------------------------------------- class TOKRightDlg : public TForm { __published: TButton *OKBtn; TButton *CancelBtn; TBevel *Bevel1; TButton *Button1; void __fastcall Button1Click(TObject *Sender); private: public: virtual __fastcall TOKRightDlg(TComponent* AOwner); int def; }; //---------------------------------------------------------------------------- extern PACKAGE TOKRightDlg *OKRightDlg; //---------------------------------------------------------------------------- // Unit2.cpp #include "Unit2.h" #include "Unit1.h" void __fastcall TOKRightDlg::Button1Click(TObject *Sender) { def=Form1->abc; ShowMessage(def); } [/code] (4)然後再執行看看是否可行
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
sunwingman
一般會員 發表:26 回覆:47 積分:14 註冊:2008-05-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |