全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3080
推到 Plurk!
推到 Facebook!

請問如何撰寫多視窗的程式...

答題得分者是:tech_state
clio4177
一般會員


發表:28
回覆:21
積分:9
註冊:2002-07-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-21 17:43:22 IP:163.28.xxx.xxx 未訂閱
各位大大: 請問當主視窗開啟後,當使用者開啟一個新的視窗時,此新視窗會被定位在某一定的範圍,有點類似PhotoImpact圖形編輯軟體開啟一堆圖片檔後都會被限制在主視窗下的編輯區內,而不會隨意被置放在螢幕中,即使壓下最小化該圖形檔還是在編輯區中的下方。請問這種方式的視窗管理該如何撰寫?
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-21 17:54:03 IP:61.221.xxx.xxx 未訂閱
clio4177, 您好 我想您的需求應該是要做MDIForm, 在BCB中有一個範例, 請試試以下方法可以New一個MDIForm的Project: 在File->New->Projects->MDI Application    ======================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之
Tacohsu
一般會員


發表:6
回覆:12
積分:8
註冊:2002-07-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-22 00:36:40 IP:61.228.xxx.xxx 未訂閱
你好! 假如我想將其他AP,Include到自己的MDIForm中,和其他MDIChild做 並排,這樣可以實現嗎?
clio4177
一般會員


發表:28
回覆:21
積分:9
註冊:2002-07-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-22 13:54:18 IP:163.28.xxx.xxx 未訂閱
tech_state,您好: 請教MDIForm中該如何加入一個或多個BCB的Form? 您是否有關於MDI撰寫的資料或推薦? 謝謝您!!
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-22 14:31:55 IP:140.135.xxx.xxx 未訂閱
clio4177您好:  
引言:請教MDIForm中該如何加入一個或多個BCB的Form?
最簡單的方式就是File->New->選Form 就可以加入新的Form (Unit1.cpp & Unit1.h)了... 使用時要#include "Unit1.h" 不知道有沒有誤會您的意思... 若是要create a new MDI child window 則他裡面就有code了
void __fastcall TMainForm::CreateMDIChild(String Name)
{
        TMDIChild *Child;            //--- create a new MDI child window ----
        Child = new TMDIChild(Application);
        Child->Caption = Name;
        if (FileExists (Name))
                Child->Memo1->Lines->LoadFromFile(Name);
}
//---------------------------------------------------------------------------    void __fastcall TMainForm::FileNew1Execute(TObject *Sender)
{
        CreateMDIChild("NONAME"   IntToStr(MDIChildCount   1));
}    
順心 <>~我也是在學習的階段,所以請您多多見諒與指教~ 發表人 -
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-22 14:47:22 IP:61.221.xxx.xxx 未訂閱
Tacohsu, 您好 我沒有試過這樣的情形,不過如果您include進來的AP是執行檔的話,可能不行。    clio4177, 您好 我前面所提的BCB中的範例中CreateMDIChild的Fuction有提到怎麼去Create一個MDIForm,您可以參考看看,或是參考下面的連結資料。 http://www.experts-exchange.com/Programming/Programming_Languages/Cplusplus/Q_20582993.html http://delphi.ktop.com.tw/topic.php?TOPIC_ID=23893 ======================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之
clio4177
一般會員


發表:28
回覆:21
積分:9
註冊:2002-07-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-22 16:08:15 IP:163.28.xxx.xxx 未訂閱
tech_state: 請問如果我已經寫好了多個含有個別功能的Form,那我該如何利用MDI設計的功能按鍵來呼叫這些已經建好的Form(如同MDI所提供的文件開啟模式會不斷提供新的文字編輯子視窗)?
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-22 16:37:55 IP:61.221.xxx.xxx 未訂閱
引言: tech_state: 請問如果我已經寫好了多個含有個別功能的Form,那我該如何利用MDI設計的功能按鍵來呼叫這些已經建好的Form(如同MDI所提供的文件開啟模式會不斷提供新的文字編輯子視窗)?
clio4177, 您好 請試試以下的方法: (1)將做好的form 由 auto-create form 改為 Available form (2)將FormStyle改為fsMDIChild (3)再new form http://delphi.ktop.com.tw/topic.php?TOPIC_ID=29861 試試看! ======================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之
clio4177
一般會員


發表:28
回覆:21
積分:9
註冊:2002-07-17

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-05-22 16:38:28 IP:163.28.xxx.xxx 未訂閱
taishyang,您好: 我的意思是指MDI中所提供的子視窗是屬於Memo的文字編輯視窗,若我欲將MDI提供的Memo視窗改成我已經寫好的功能視窗該如何撰寫?主要是要限制這些功能視窗能被限制在主視窗的視窗範圍中,而不會使這些功能視窗啟動時,被隨意的置放在螢幕的任意位置。
lcsboy
版主


發表:87
回覆:622
積分:394
註冊:2002-06-18

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-05-22 17:00:41 IP:211.23.xxx.xxx 未訂閱
To Tacohsu: 有點離題嚕, 建議可以另闢一個標題來討論    基本上是不行, 不過我想到一個解法: 1. FindWindow --> 找出你要AP的Handle 2. 使用這個Handle, 去設定那個Class的屬性    還沒空試, 所以僅供觀念上的參考. 有更好的方式, 請另開一個標題討論 ^^    To clio4177: MDI control? 應該是粉簡單的, 提供以下方式: String MDICaption; TMDIChild *MDI; ...... MDI=dynamic_cast (ActiveMDIChild); // 取得目前active的MDI視窗指標 ShowMessage(MDI->Caption); // 秀出active MDI視窗的Caption ...... MDI=MDIChildren[0]; // 取得很多個MDI視窗裡的第一個MDI視窗指標 ShowMessage(MDI->Caption); ...... MDI=MDIChildren[MDIChildCount-1]; //取得很多個MDI視窗裡的最後一個MDI視窗指標 ShowMessage(MDI->Caption); ...... PS:MDIChildren陣列裡的排列順序不一定就是你開啟MDI的順序 不知道這樣子, 夠用嗎 ^^
clio4177
一般會員


發表:28
回覆:21
積分:9
註冊:2002-07-17

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-05-22 17:54:14 IP:163.28.xxx.xxx 未訂閱
引言 ********************************************************************* clio4177, 您好 請試試以下的方法: (1)將做好的form 由 auto-create form 改為 Available form (2)將FormStyle改為fsMDIChild (3)再new form http://delphi.ktop.com.tw/topic.php?TOPIC_ID=29861 試試看! ********************************************************************** To tech_state,您好: 我已經按您提供的方式嘗試了一下,測試結果是可以用的。我的程式設定如下: Form1設定: caption= Test name= Test Formstyle= fsMDIChild MDI的MainForm中的OnClick事件: //-------------------------------------------------------------------- void __fastcall TMainForm::ToolButton13Click(TObject *Sender) { TTest *Test; Test = new TTest(Application); } //-------------------------------------------------------------------- 有問題請教您: 為何一執行程式編譯時會出現"[C Warning] main.cpp(61): W8004 'Test' is assigned a value that is never used"錯誤?
clio4177
一般會員


發表:28
回覆:21
積分:9
註冊:2002-07-17

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-05-22 18:05:14 IP:163.28.xxx.xxx 未訂閱
To tech_state,您好: 如果把下列程式改成如下有何差異: MDI的MainForm中的OnClick事件: //-------------------------------------------------------------------- void __fastcall TMainForm::ToolButton13Click(TObject *Sender) { TTest *Test; Test = new TTest(Application); <----- *A Test = new TTest(this); <----- *B } //-------------------------------------------------------------------- 因為我把*A改成*B的寫法時,程式還是可以執行。但是這個錯誤"[C Warning] main.cpp(61): W8004 'Detection' is assigned a value that is never used"還是依然存在耶。請問*A與*B這兩條程式在應用上有何差異?
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-05-22 18:06:13 IP:140.135.xxx.xxx 未訂閱
clio4177您:   
引言:為何一執行程式編譯時會出現"[C Warning] main.cpp(61): W8004 'Test' is assigned a value that is never used"錯誤?
它只是說Test元件指標,您並沒有去用它的意思(警告訊息) 順心 <>~我也是在學習的階段,所以請您多多見諒與指教~
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-05-22 18:06:27 IP:140.135.xxx.xxx 未訂閱
clio4177您:   
引言:為何一執行程式編譯時會出現"[C Warning] main.cpp(61): W8004 'Test' is assigned a value that is never used"錯誤?
它只是說Test元件指標,您並沒有去用到它的意思(警告訊息) 若有使用到如:Test->Caption="xxx"; 就不會有警告訊息了 順心 <>~我也是在學習的階段,所以請您多多見諒與指教~ 發表人 -
clio4177
一般會員


發表:28
回覆:21
積分:9
註冊:2002-07-17

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-05-22 18:21:32 IP:163.28.xxx.xxx 未訂閱
To taishyang: 謝謝您的解答!!
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-05-22 19:06:34 IP:61.221.xxx.xxx 未訂閱
clio4177, 您好 第一個問題taishyang版主已回答,我想您也了解了。 至於第二個問題,Application 和 this 有什麼差異? 我剛剛做了一個小實驗,在Form中使用一個Button,Button的OnClick加入以下的code,  
   Edit1->Text = Application->Title;
   Edit2->Text = this->Text;
 
結果得到的是Edit1的值是ProjectName,而Edit2的值是FormName。 又經由Help檔得知(僅列出一部份,其餘的請參考Help檔), In nonstatic member functions, the keyword this is a pointer to the object for which the function is called. All calls to nonstatic member functions pass this as a hidden argument. this is a local variable available in the body of any nonstatic member function. Use it implicitly within the function for member references. It does not need to be declared and it is rarely referred to explicitly in a function definition. 不知這樣有沒有幫助您更了解二者的差異性? ======================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之 發表人 - tech_state 於 2003/05/22 19:10:25
系統時間:2024-07-03 5:11:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!