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

如何用InputBox這個功能?

尚未結案
xiangyou0017
一般會員


發表:7
回覆:5
積分:2
註冊:2011-11-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-12-06 21:21:20 IP:42.48.xxx.xxx 訂閱
想用InputBox這個工具,當我輸入文本后,(面版上的“確定”“取消”都有用,而且不准輸入空文檔~~~
)而我現在所能做到的是,輸入后點哪個Button都是一樣的~~~~~~急~!謝謝大俠了~~.
編輯記錄
taishyang 重新編輯於 2011-12-07 02:55:23, 註解 移除[求助]字樣‧
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-12-07 11:14:34 IP:202.39.xxx.xxx 訂閱
請不要急,把問題說明清處;否則要怎麼幫您?

『面版上的“確定”“取消”都有用』?使用 InputBox 的人,一定都是這樣的啊!
『輸入后點哪個Button都是一樣的』? 一樣到底是怎樣?恕小弟駑鈍,實難明瞭您的意思。

InputBox 的說明很清楚,若您按下“確定”,它傳回您在 EditBox 輸入的 String;若您按下“取消”,它傳回您傳給它的 Default String。
您可依其傳回的String 的內容,自行判斷要處理什麼事,這樣有啥問題嗎?
xiangyou0017
一般會員


發表:7
回覆:5
積分:2
註冊:2011-11-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-12-07 22:00:58 IP:42.48.xxx.xxx 訂閱
對不起,呵呵!太著急,沒說清楚~
InputBox這個函數他的返回值是多少?應當怎樣利用?比如我想利用他的返回值做一個判斷,應當如何去用?
在一個Button事件里,我添加InputBox;
當我輸入為空時,點下確定,然後他的返回值是不是false或者0?
還想實現判斷,若輸入為空時,提示警告[ ];
然後繼續在InputBox里輸入數值(返回上一步的判斷);
若不為空,則進行下一次的InputBox的調用(是不是如下方法?)
AnsiString a=InputBox(" adfdfdf","dfsdfdsf","");
if(StrToInt(a)==0)
{Application->MessageBox("dfdfd","dfdfdf",MB_ICONWARNING);
AnsiString a=InputBox(" adfdfdf","dfsdfdsf","");}
這裡有個問題,若返回值是0的話,我輸入0也作出了為空的判斷,不是本意啊!!呵呵!~~~
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-12-08 02:30:57 IP:202.39.xxx.xxx 訂閱
InputBox 的 Edit 沒有 OnExit Event 供您做輸入值的檢查,
其兩個 Button 也無 OnClick Event 供您做輸入值的檢查,
故只能等它按下兩個 Button 之一後,關閉該視窗並傳回 Exit->Terxt 或 Default String。

如果您一定要該 String = "" 便重複執行 InputBox,那就得將它放在迴圈裡。
if(StrToInt(a)==0) 不符合您此處的需求:
當 a = "" 或 a = "A1" 或 a = "2.8.1" 等非數值時,會發生錯誤。
您該用 String 格式的 if (a == "") 判斷。

String a;
a = "";
while (a == "") {
a=InputBox("Input Box Caption","Prompt String","");
// or a=InputBox("Input Box Caption","Prompt String","Default Value");
if (a == "") Application->MessageBox("Prompt String Error Message".c_str(), "Input Box Caption".c_str(), MB_ICONWARNING);
// 請看 OnLine Help 寫 Code,注意各參數的 Data Type。"String".c_str() 將 String 轉 char。
// 當 a == "" 返回迴圈頭,繼續要求輸入 a。
}

這種寫法,因不能即時於 Edit 的 OnExit 或 "確定" 之 OnClick 便擋住 Edit->Text == "" 並警告,
可能會重複開關 InputBox() 與 Application->MessageBox() 多次,並不理想。
但若無法開發自己的多功能 InputBox,也只能如此寫了!
又,即使 a != "",也未必符合您的目的;則 if (a == "") 可能需要加 else,並於其中做更複雜的判斷了。

bool OK = false;
String a;
a = "";
while (!OK) {
a=InputBox("Input Box Caption","Prompt String","");
// or a=InputBox("Input Box Caption","Prompt String","Default Value");
if (a == "") {
Application->MessageBox("Edit->Text 不准空白".c_str(), "Input Box Caption".c_str(), MB_ICONWARNING);
// 請看 OnLine Help 寫 Code,注意各參數的 Data Type。"String".c_str() 將 String 轉 char。
}
else {
// a != "" 但可能仍不符需求,例如 = " " 一堆半型空白或 = "1$7#s!" 等亂七八糟的內容
// ........
if () OK = true;
}
// 當 OK == true 跳出迴圈,否則返回迴圈頭,繼續要求輸入 a。
}
編輯記錄
herbert2 重新編輯於 2011-12-07 11:42:43, 註解 無‧
xiangyou0017
一般會員


發表:7
回覆:5
積分:2
註冊:2011-11-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2011-12-12 22:48:42 IP:110.52.xxx.xxx 訂閱
謝謝您的回答,對我的幫助很大,真的感謝,呵呵,以後多交流哈~!!!
系統時間:2024-03-29 20:30:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!