不同的Form共用變數或函式 |
答題得分者是:herbert2
|
wei0510
一般會員 發表:9 回覆:2 積分:2 註冊:2009-05-19 發送簡訊給我 |
請問一個我開了一個VCL Forms Appliation,上面設立了FORM1、FORM2,這兩個form需要幾個變數互相傳遞訊息,也有用到功能完全相同的自訂函式,但是兩者卻不同時存在(用auto-create forms的方式,當form1關閉後才產生form2。),所以應該是沒辦法將變數、函式定義成其中一個form的pubilc成員給另一個引用。
目前我想使用全域變數、函式來解決這個問題,並且想將這些變數、函式做成一個單獨的檔案(比如像是Global.cpp)以方便管理,網路上查到的資料應該是開一個"unit"並將程式寫在其中,然而開啟後卻發現它給我unit.h、unit.cpp兩個檔案,unit.h我卻不知道該怎麼使用,另外unit預設是沒有幫我include任何表頭檔,所以我沒辦法使用UnicodeString這個形態,不知道要include哪個表頭檔才能使用,另外在build的時候也遇到form1跟form2不認識unit裡宣告的變數等情況。 或許使用全域變數、函式來克服這問題不是好方法,小弟我又缺乏對這種比較型態的程式的編寫經驗,所以想請問一下一般來說大家遇到這狀況會怎麼解決呢?如果非得使用全域變數、函式來解決這個問題,正確來說又該怎麼處理呢? |
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
功能完全相同的自訂函式做成一個單獨的檔案(比如像是Global.cpp及Global.h)後, FROM1.h 及 FORM2.h 都 include Global.h 便可用.
(form1跟form2不認識unit裡宣告的變數等情況, 乃因未 include unit.h 吧!) 至於 FORM1 與 FORM2 要互傳訊息, 可考慮利用 Screen->Tag 存一個 TStrings 的位址, 再於 FORM1 及 FORM2 的建構 Function 中將其引用, *.h 之 private: 段設 TStrings *MyStrings; *.cpp 之 __fastcall TFORM1::TFORM1(TComponent* Owner) : TForm(Owner) 段寫 MyStrings = (TStrings *)(Screen->Tag); 如此, FORM1 與 FORM2 都可對 MyStrings 做 Read 與 Write 動作, 便可互傳訊息. MyStrings->Strings(i) 宜用 Name=Value 的格式, 方便設定 Value 與讀取 Value. 也可考慮將要傳遞的訊息用 TStrings 的 SaveToFile() 存檔, 供另一 Form 以 LoadFromFile() 讀取. UnicodeString 需 2009 版才有, 之前版本須加入 TNT Ware 才能使用. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |