線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1292
推到 Plurk!
推到 Facebook!

MDI的MainForm必須在程式開始時就出現嗎?

答題得分者是:gemi0305
Branky
一般會員


發表:2
回覆:3
積分:1
註冊:2003-08-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-25 22:13:44 IP:61.231.xxx.xxx 未訂閱
製作一個MDI介面,想在MainForm出現之前 先SHOW Password Dialog 請問有辦法嗎?
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-25 22:42:33 IP:61.224.xxx.xxx 未訂閱
妳好,這是logo的寫法,如果要用passwordDiglog的話,下一篇比較適合~    先將PasswordDlg 照這樣移到Available forms下面, 讓我們可以動態建立     在[Project]->[View Source]中修改程式碼:
#include 
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------
USEFORM("main.cpp", MainForm);
USEFORM("ChildWin.cpp", MDIChild);
USEFORM("about.cpp", AboutBox);
USEFORM("G:\Program Files\Borland\CBuilder6\Projects\Unit1.cpp", PasswordDlg);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
        Application->Initialize();
        PasswordDlg = new TPasswordDlg(Application);
        PasswordDlg->ShowModal();
        PasswordDlg->Update();  
        Application->CreateForm(__classid(TMainForm), &MainForm);
                 Application->CreateForm(__classid(TAboutBox), &AboutBox);
                 Application->Run();
        delete PasswordDlg;              return 0;
}     
國泰平安 發表人 - Gemi0305 於 2003/08/25 23:27:45
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-25 23:12:58 IP:61.224.xxx.xxx 未訂閱
SORRY,我忘了考量是passworddialog, 那方法是完全不同的, 請再參考一下, 這次直接行[Project]->[View Source]中修改程式碼就可以了:    直接這樣改:     
#include 
#pragma hdrstop
//---------------------------------------------------------------------
USEFORM("main.cpp", MainForm);
USEFORM("ChildWin.cpp", MDIChild);
USEFORM("about.cpp", AboutBox);
USEFORM("G:\Program Files\Borland\CBuilder6\Projects\Unit1.cpp", PasswordDlg);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
        Application->Initialize();
        Application->CreateForm(__classid(TPasswordDlg), &PasswordDlg);
        //把PasswordDlg移到mainform上面 
        Application->CreateForm(__classid(TMainForm), &MainForm);
                 Application->CreateForm(__classid(TAboutBox), &AboutBox);                     Application->Run();            return 0;
}
 
然後在PasswordDlg所屬的.cpp檔加入這樣:
 
#include 
#pragma hdrstop    #include "Unit1.h"
#include "main.h"
//---------------------------------------------------------------------
#pragma resource "*.dfm"
TPasswordDlg *PasswordDlg;
//---------------------------------------------------------------------
__fastcall TPasswordDlg::TPasswordDlg(TComponent* AOwner)
        : TForm(AOwner)
{
}
//---------------------------------------------------------------------
void __fastcall TPasswordDlg::OKBtnClick(TObject *Sender)
{
   MainForm->Show();//show MainForm自行看要如何運用  
}
//---------------------------------------------------------------------------        
不好意思哦 國泰平安
Branky
一般會員


發表:2
回覆:3
積分:1
註冊:2003-08-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-26 22:39:06 IP:61.231.xxx.xxx 未訂閱
謝謝gemi0305的回答! 我比較偏好第一個方法! 因為第二個方法有一個問題,當MainForm close時,PasswordDlg 並沒有被close 但是,我又有一個問題! 如果要在PasswordDlg之前再做一個「確定進入此系統」的Form 我也一樣用動態產生的方式嗎?! 再一個問題: Update(); 的目的是什麼? 麻煩各先進幫忙了!
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-27 00:28:25 IP:61.224.xxx.xxx 未訂閱
能解決問題的方法就是好方法~    動態產生就可以了,不過要看妳說的那個form有什麼特別作用, 如,要當logo,就是進程式之前的那個圖案,那就不能用ShowModal, 因為會停在那個form上,要用show() 可以在passwordDlg之前加,就會先開,  
Form2 = new TForm2(Application);
Form2->Show();
Form2->Update();
Sleep(3000);
delete Form2;     
顯示這個form 三秒之後就關閉並delete, 可以有很多種用法,只要注意開啟的順序就行,才不會三個form在打架~ 妳可以依自己想呈現的方式調整開啟和關閉的順序。 Update() 顧名思義就是更新,呵 如果妳要問的更深入的話, bcb online help上寫著: 它會重繪妳所指定的東西的外觀, 一般是會自動去做,但怕說被一些其他比較長的處理動作所防礙, 所以妳如果下這個指令,就可以直接update,不用等它自動的發生(怕被防礙)。 不知這樣解譯妳可接受嗎? 國泰平安
Branky
一般會員


發表:2
回覆:3
積分:1
註冊:2003-08-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-09-01 13:14:08 IP:163.29.xxx.xxx 未訂閱
謝謝gemi0305的答覆!
系統時間:2024-11-25 11:27:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!