如何應用動態的表單及一些元件製作InputBox |
尚未結案
|
phorn
一般會員 發表:28 回覆:60 積分:17 註冊:2004-03-03 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 請問一下,因為我的程式需要Show出一個輸入方塊, 然後輸入函式執行所需要的參數,由於BCB內建的InputBox不方便輸入多個參數 所以我想應用動態的表單、按鈕、Edit製作一個輸入對話框,請問一下該怎麼寫呢?我現在只會把對話框建立出來,其他的功能就麻煩大大教導我了!!謝謝!! >>< face="Verdana, Arial, Helvetica">phorn 你好: (1)假設你的主 Form 叫做 Form1 (Unit1.h, Unit1.cpp),你自己製作用來讓使 用者輸入資料的 Form 叫做 Form4 (Unit4.h, Unit4.cpp) (2)假設在 Form4 上有兩個 Edit,分別為 Edit1, Edit2 (3)在 BCB 裡面按「Project/Options」出現「Project Options」Dialog,選擇 「Forms」Tab,先確認 Form1 是「Auto-create forms」,而 Form4 是 「Available forms」,最後按確定 (4)然後在 Unit1.cpp 裡面加入以下的程式碼,就可以達到目的 #include "Unit4.h" void __fastcall TForm1::Button1Click(TObject *Sender) { Form4=new TForm4(this); Form4->ShowModal(); ShowMessage(Form4->Edit1->Text); // 取得 Form4 中 Edit1 的文字 ShowMessage(Form4->Edit2->Text); // 取得 Form4 中 Edit2 的文字 delete Form4; Form4=NULL; } (5)你在 Unit4.cpp 裡面可以利用一個全域變數,來標示是哪一個 Button 被按 到,如果確定鈕被按到的話,可以先檢查 Edit1, Edit2 的內容是否正確, 再決定關閉或讓使用者重新輸入;如果取消鈕被按到的話,無條件把 Form4 關閉,並把 Edit1, Edit2 的內容清空,這樣子 Form1 就可以知道使用者是 在什麼條件之下,把 Form4 給關閉了,例如: // Unit1.cpp #include "Unit4.h" void __fastcall TForm1::Button1Click(TObject *Sender) { Form4=new TForm4(this); Form4->ShowModal(); if(Form4->Edit1->Text.Trim()=="" && Form4->Edit2->Text.Trim()=="") { ShowMessage("取消 或 x"); } else { ShowMessage("確定\n"+Form4->Edit1->Text+"\n"+Form4->Edit2->Text); } delete Form4; Form4=NULL; } // Unit4.cpp bool gbCanClose=true; void __fastcall TForm4::FormCloseQuery(TObject *Sender, bool &CanClose) { if(!gbCanClose) { // 檢查 Edit1, Edit2 的資料格式正確,例如: 檢查是否為空白? if(Edit1->Text.Trim()!="" && Edit2->Text.Trim()!="") { CanClose=true; } else { ShowMessage("重新輸入"); CanClose=false; gbCanClose=true; } } else { Edit1->Text=""; Edit2->Text=""; CanClose=true; } } void __fastcall TForm4::Button1Click(TObject *Sender) { gbCanClose=false; Close(); } void __fastcall TForm4::Button2Click(TObject *Sender) { gbCanClose=true; Close(); } (6)請再依照自己的需求,自行修改 >>> < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=10003806&CC=223734"> -- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2004/08/03 17:13:12
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
phorn
一般會員 發表:28 回覆:60 積分:17 註冊:2004-03-03 發送簡訊給我 |
|
phorn
一般會員 發表:28 回覆:60 積分:17 註冊:2004-03-03 發送簡訊給我 |
RaynorPao您好:
程式我已經寫好了,我是用BCB新增一個Dialog,然後在上面加入edit
然後要用時再去呼叫它
例如: int Value = Dlg_Three->ShowModal();//Dlg_Threeg 是我新增的Dialog名稱
if(Value==2)return;
int S1 = StrToInt(Dlg_Three->Edit1->Text);
int S2 = StrToInt(Dlg_Three->Edit2->Text); 我們可以從他傳回的值判斷使用者是按確定或取消.
不知這麼做有沒有缺點,大大如果知道的話麻煩您??我謝謝!!
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |