動態產生Form的錯誤訊息... |
尚未結案
|
look4help
一般會員 發表:9 回覆:8 積分:3 註冊:2005-07-26 發送簡訊給我 |
請教一下。
我想在一個公用程式檔(就是沒有Form畫面)中寫一個可以動態Create From的函式:
結果我在測試的時候,有時候會出現錯誤訊息。我查不出問題再哪哩,請各位幫我看一下可能的原因好麼?謝謝。 公用程式檔uTility.cpp檔中,有動態產生Form函式如下:
extern void DynamicCallForm(char FormTag); extern void DynamicCallForm(char FormTag) { if (parameter.DynamicFormParent->ControlCount>0) { delete parameter.DynamicFormParent->Controls[0]; } TForm* myFormclass ; switch (FormTag) { case '1' : myFormclass = new TfCreateORLoad(xxx); break; case '2' : myFormclass = new TfOpenVirtualTreeExplor(xxx); break; } myFormclass->Hide(); myFormclass->BorderStyle = bsNone; myFormclass->Parent = parameter.DynamicFormParent; myFormclass->Align = alClient; myFormclass->Show(); }我的架構是這樣: 1.程式主Form上宣告一個全域變數,Struct型態(藍色部分文字)。 struct Parameters { TPanel* DynamicFormParent;---->於fBakform的FormCreate事件時給值=Panel1 TComponent* CreateOwner; ---->於fBakform的FormCreate事件時給值=this bool isCreateNew; }; Parameters parameter;2.主Form上一個按鈕按下後,會開啟fBakform。 3.TfCreateORLoad / TfOpenVirtualTreeExplor分別為另外兩個Form。fBakform放一個按鈕。 Button1呼叫DynamicCallForm('1')。在Button1事件時,fBakform本身不會被關掉。只是負責產生一 個TfCreateORLoad類別的Form。 4.在TfCreateORLoad上放另一個按鈕Button2。呼叫DynamicCallForm('2')。執行此函式後,程式必須 要把fCreateORLoad自己先移除掉,然後產生一個TfOpenVirtualTreeExplor類別的Form。 因為我想將每次Create的From放在這個fBakform的Panel上,所以上面DynamicCallForm函式中, 紅色文字的部份,我不清楚該放什麼。我之前放過parameter.DynamicFormParent,也試過放 parameter.CreateOwner。編譯都會成功。但是執行測試時,前一兩次輪流Click這兩個按鈕。可能沒問題,可是不久之後就會出現AccessViolation或Abstract Error. 不知道原因到底出在哪裡?請教高手指點一下,謝謝。 發表人 - look4help 於 2005/09/14 01:44:52 |
mier_tt
一般會員 發表:18 回覆:43 積分:12 註冊:2004-12-14 發送簡訊給我 |
|
ENIX007
高階會員 發表:28 回覆:274 積分:185 註冊:2003-11-27 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |