請問在MDI的Child中要更改MainForm上的物件的值或call函數時的問題. |
答題得分者是:herbert2
|
leochen1204
一般會員 發表:10 回覆:14 積分:4 註冊:2008-11-06 發送簡訊給我 |
我在MDI的Child中, 在Child1中加了#include "MAIN.h" 使得Child中可以讀取全域變數及MainForm的物件
我在MainForm裡寫一個函數 void __fastcall TMainForm::Function1() 想要在Child1的按鈕中去執行該函數. 但是要 Run時會出現一個錯誤的視窗. 見附件~ 這是什麼地方錯誤呢? 編輯記錄
leochen1204 重新編輯於 2008-11-17 20:00:49, 註解 無‧
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
|
leochen1204
一般會員 發表:10 回覆:14 積分:4 註冊:2008-11-06 發送簡訊給我 |
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
與您呼叫原寫在 MDIForm 中的 Function 類似.
例如: Utility.cpp 中有個 int __fastcall FuncA(int Num) {...} 則 MDIChild 之 .h 中 include Utility.h, MDIChild 要用時, .cpp 直接呼叫 int ixResult = FuncA(ixSend); 即可. 請注意: Utility.cpp 沒有 Form, 故不是 int __fastcall Form1::FuncA(int Num) {...} ===================引 用 leochen1204 文 章=================== 如果是這樣子, 那Child1裡要如何使用Utility.cpp裡寫的Function呢? 可以舉一個簡單的例子嗎 ? ===================引 用 herbert2 文 章=================== 比較安全的寫法: 將公用 Function 寫入一個 Utility.cpp 與 Utility.h, include 進該 Project. 不要寫在 MDIForm 上.
編輯記錄
herbert2 重新編輯於 2008-11-17 23:06:05, 註解 無‧
|
leochen1204
一般會員 發表:10 回覆:14 積分:4 註冊:2008-11-06 發送簡訊給我 |
感謝您的解說!
不過我之前會想要寫在MainForm裡的原因是因為我的函數裡想要控制另一個Child2裡的物件 例如: Child2->Shape1->Left = Child2->Shape1->Left - 10; 這種語法寫在Utility.cpp中可以嗎? ===================引 用 herbert2 文 章=================== 與您呼叫原寫在 MDIForm 中的 Function 類似. 例如: Utility.cpp 中有個 int __fastcall FuncA(int Num) {...} 則 MDIChild 之 .h 中 include Utility.h, MDIChild 要用時, .cpp 直接呼叫 int ixResult = FuncA(ixSend); 即可. 請注意: Utility.cpp 沒有 Form, 故不是 int __fastcall Form1::FuncA(int Num) {...} |
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
Function(Parameters); // Parameters 中可傳多個 Component 的 Point 及其他 type 參數.
原則上, Child2 與 Child1 雖可能同時都已啟動, 但也可能只其一啟動, 您的做法可能不可行. 若真有此需要 (通常各 Child 互相之間應獨立, 只與 MDIForm 有互動, Child1 <-> MDIForm, Child2 <-> MDIForm, 不要 Child1 <-> Child2. 不瞭解您的需求, 但感覺您應將 Child1 Child2 併成一個 Child, 用 PageControl 分 TabSheet 較恰當. ===================引 用 leochen1204 文 章=================== 感謝您的解說! 不過我之前會想要寫在MainForm裡的原因是因為我的函數裡想要控制另一個Child2裡的物件 例如: Child2->Shape1->Left = 這種語法寫在Utility.cpp中可以嗎? |
leochen1204
一般會員 發表:10 回覆:14 積分:4 註冊:2008-11-06 發送簡訊給我 |
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
將元件指標傳給 Function AAAA 試看看.
===================引 用 leochen1204 文 章=================== 我發現我的錯誤是出現在MainForm裡的的__fastcall TMainForm::Function()裡面 我在函數裡面寫 void __fastcall TMainForm::AAAA(TFrom *ChildForm, TShape *Shape2) { ChildForm->Shape2->Width = area /10; //area是全域變數 ChildForm->Shape2->Height = area /10; } 就會出現錯誤的視窗~ 但是可以執行~ 功能也可以正常~ 只是不知道會不會有什麼影響... |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |