MDI問題請教 |
尚未結案
|
opium
一般會員 發表:22 回覆:11 積分:6 註冊:2003-02-23 發送簡訊給我 |
各位大大安安:
小弟是個mdi的新手想請問個問題
請各大大指導
小弟的mdichild是用動態產生的
在動態產生一個stringgrid
放在mdichild
如果一次產生二個就會有問題
好像是無法指定focus,不知是不是小弟的用法有錯呢?
附上程式碼
請大大幫個忙 謝謝
void __fastcall TForm1::FormCreate(TObject *Sender) { TForm *NewForm=new TForm(this); NewForm->FormStyle=fsMDIChild; NewForm->Parent=(this); NewForm->Top=50; NewForm->Left=50; NewForm->Height=300; NewForm->Width=450; TStringGrid *sg=new TStringGrid(this); sg->Parent=NewForm; sg->Align=alClient; sg->ColCount=10; sg->RowCount=100; sg->DefaultColWidth=65; sg->DefaultRowHeight=65; sg->FixedCols=0; sg->FixedRows=0; NewForm->Show(); TForm *NewForm1=new TForm(this); NewForm1->FormStyle=fsMDIChild; NewForm1->Parent=(this); NewForm1->Top=70; NewForm1->Left=70; NewForm1->Height=300; NewForm1->Width=450; TStringGrid *sg1=new TStringGrid(this); sg1->Parent=NewForm1; sg1->Align=alClient; sg1->ColCount=10; sg1->RowCount=100; sg1->DefaultColWidth=65; sg1->DefaultRowHeight=65; sg1->FixedCols=0; sg1->FixedRows=0; NewForm1->Show(); }「好程式應與他人分享!」無疑是至理名言。 -Richard Stallman,GNU 計畫的創辦人 GNU宣言 |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
opium 您好: 既然是使用 MDI Form,那麼就使用 TMDIChild 來設定子 Form 吧,例如:
TMDIChild *NewForm = new TMDIChild(Application);同時;您將建立子 Form 的動作放到 Form 的 OnCreate 事件中是會出錯的,建議您改放到 OnShow 事件中。 不過;我有點好奇,您為何不直接在建立新專案時,就選擇建立 "MDI Application" 呢?BCB 會幫您建立好一個 MDI 的基本模組,這樣子會簡單多了。 7 天天敲鍵盤 v 時時按滑鼠 8 |
opium
一般會員 發表:22 回覆:11 積分:6 註冊:2003-02-23 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
opium
一般會員 發表:22 回覆:11 積分:6 註冊:2003-02-23 發送簡訊給我 |
RedSnow不好意思
麻煩您看一下了 謝謝
[Linker Error] Unresolved external 'TMDIChild::' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\UNIT1.OBJ
[Linker Error] Unresolved external '__fastcall TMDIChild::TMDIChild(Classes::TComponent *)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\UNIT1.OBJ 謝謝 「好程式應與他人分享!」無疑是至理名言。
-Richard Stallman,GNU 計畫的創辦人
GNU宣言
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
opium 您好: 真是抱歉,我將您的問題弄混了,之前的回覆都是在使用 MDI Application 自動產生模組的假設狀態下,沒弄清楚您是要自己試著做。 您可以先試著將設定子 Form Parent 的敘述 mark 掉試試看,應該可以正常啟動與執行 (放在 Form 的 OnShow 事件中,或是程式執行後以按鈕的 OnClick 事件來建立),但是因為沒設定 Parent,所以程式結束時不會自動釋放掉,這個部份尚待找出方法來解決,我稍後要出門,待忙完後再繼續做測試。 7 天天敲鍵盤 v 時時按滑鼠 8
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
opium 您好: 剛才做過測試,發現只需小小的修改一下就可以了,我將您的程式修改如下,您試試看吧:
void __fastcall TForm1::FormShow(TObject *Sender) { TForm *NewForm = new TForm(Application); NewForm->FormStyle = fsMDIChild; NewForm->Top = 50; NewForm->Left = 50; NewForm->Height = 300; NewForm->Width = 450; TStringGrid *sg = new TStringGrid(this); sg->Parent = NewForm; sg->Align = alClient; sg->ColCount = 10; sg->RowCount = 100; sg->DefaultColWidth = 65; sg->DefaultRowHeight = 65; sg->FixedCols = 0; sg->FixedRows = 0; TForm *NewForm1 = new TForm(Application); NewForm1->FormStyle = fsMDIChild; NewForm1->Top = 70; NewForm1->Left = 70; NewForm1->Height = 300; NewForm1->Width = 450; TStringGrid *sg1 = new TStringGrid(this); sg1->Parent = NewForm1; sg1->Align = alClient; sg1->ColCount = 10; sg1->RowCount = 100; sg1->DefaultColWidth = 65; sg1->DefaultRowHeight = 65; sg1->FixedCols = 0; sg1->FixedRows = 0; }7 天天敲鍵盤 v 時時按滑鼠 8 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |