請問MDI表單裡要如何宣告全域變數讓所有Child都能使用? |
答題得分者是:2007
|
leochen1204
一般會員 發表:10 回覆:14 積分:4 註冊:2008-11-06 發送簡訊給我 |
|
pceyes
尊榮會員 發表:70 回覆:657 積分:1140 註冊:2003-03-13 發送簡訊給我 |
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
|
2007
中階會員 發表:54 回覆:90 積分:98 註冊:2008-08-12 發送簡訊給我 |
拉一個 Unit (File--->New--->Unit)
Unit.cpp int test = 0; //宣告變數 Unit.h extern int test; //extern 變數 每個 ChildForm 在 include 這個 Unit ,應該就可以吧!!! 但我不知這是不是正確的方法,是不是有不好的地方?? ===================引 用 leochen1204 文 章=================== 在Main.h 裡的Public 宣告變數var1 可是在ChildForm裡好像還是不認識該變數耶... 應該怎麼宣告, 或是怎麼讓變數在各個ChildForm裡互通呢? |
leochen1204
一般會員 發表:10 回覆:14 積分:4 註冊:2008-11-06 發送簡訊給我 |
這樣似乎不行耶
Edit1->Text = TEdit(application->Main->FindComponent('Edit2'))->Text; ===================引 用 pceyes 文 章=================== 1. 在Form1上放一個Richedit1元件(用Edit元件也可) 2. MdiChildForm內放一個Memo1 3. memo1.Text := TRichedit(application.MainForm.FindComponent('Richedit1')).Text; 之前在站上看到前輩回文中看到的,我拿來試,還不錯用說。 我的案例是用 Delphi 寫MdiForm MdiChildForm(包在Dll中用動態載入)。 |
leochen1204
一般會員 發表:10 回覆:14 積分:4 註冊:2008-11-06 發送簡訊給我 |
這樣成功了!
我在MainForm.cpp 裡宣告這些int變數. 接著在MainForm.h裡將這些變數宣告成extern int 然後在ChildForm.cpp裡include "MainForm.h" 這樣就可以存取這些變數了~ 這跟全域變數的意思一樣嗎?? ===================引 用 2007 文 章=================== 拉一個 Unit (File--->New--->Unit) Unit.cpp int test = 0; //宣告變數 Unit.h extern int test; //extern 變數 每個 ChildForm 在 include 這個 Unit ,應該就可以吧!!! 但我不知這是不是正確的方法,是不是有不好的地方?? ===================引 用 leochen1204 文 章=================== 在Main.h 裡的Public 宣告變數var1 可是在ChildForm裡好像還是不認識該變數耶... 應該怎麼宣告, 或是怎麼讓變數在各個ChildForm裡互通呢? |
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
可以, 但若往後每次需加一個變數, 就多一個變數位址.
用 TStrings 則永遠只有一個位址, 且 TStrings->Strings[i] = "Name=Value"; 的方式, 會較有彈性. Name 類似變數名稱, Value 為其值, 隨時可轉 int 或 double 使用. ===================引 用 leochen1204 文 章=================== 這樣成功了! 我在MainForm.cpp 裡宣告這些int變數. 接著在MainForm.h裡將這些變數宣告成extern int 然後在ChildForm.cpp裡include "MainForm.h" 這樣就可以存取這些變數了~ 這跟全域變數的意思一樣嗎?? |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
這樣的寫法就是全域變數的意思。有好有壞…
好的不用講,就是容易取得。壞的部份… 請注意變數名的取法,最好能使用比較唯一性的,不然可能會不經意的使用到它。 所以建議可以取名為gTEST,這樣會比test好多了。因為當你程式愈寫愈多時可能會忘了你曾有一個全域的叫test,進而重複的使用到同樣的名字而導致錯誤! 補充一下,當你create一個form時,就會有一個叫Form1的變數,它就是全域的變數! ===================引 用 leochen1204 文 章===================所以 這跟全域變數的意思一樣嗎?? ===================引 用 2007 文 章=================== 但我不知這是不是正確的方法,是不是有不好的地方??
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan
編輯記錄
aftcast 重新編輯於 2008-11-08 07:05:25, 註解 無‧
|
leochen1204
一般會員 發表:10 回覆:14 積分:4 註冊:2008-11-06 發送簡訊給我 |
那請問一下, 如果不是用create出來的form呢?
因為我要存取變數的兩個form是MDI裡面我想要設定一些property的設定視窗. 這兩個form是在專案中一開始就Add進來的. 我試著要打開設定視窗時讓property視窗對齊到MainForm的最右邊...(試過Docking... 不成功...) 在MainForm的OnResize中下 Property->Left = MainForm->Width - Property->Width; 不知道正確的指令下法... sorry ===================引 用 aftcast 文 章=================== 這樣的寫法就是全域變數的意思。有好有壞… 好的不用講,就是容易取得。壞的部份… 請注意變數名的取法,最好能使用比較唯一性的,不然可能會不經意的使用到它。 所以建議可以取名為gTEST,這樣會比test好多了。因為當你程式愈寫愈多時可能會忘了你曾有一個全域的叫test,進而重複的使用到同樣的名字而導致錯誤! 補充一下,當你create一個form時,就會有一個叫Form1的變數,它就是全域的變數! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |