為了不讓使用者輸入錯誤的資料型態,如何鎖鍵盤? |
|
cosme
一般會員 發表:5 回覆:4 積分:1 註冊:2002-12-18 發送簡訊給我 |
這個問題,也困擾了我很久 一般我的作法是等使用者輸入完了之後,做一個檢查,判斷是否和我要的資料型態相符,如果是,可以離開,如果否,show一個錯誤,讓他再輸入一次,直到型態正確為止。 我的思考是,如果他輸入錯誤,根本就不讓他key 的資料進去,我想到了用ReadOnly這個屬性。以下是我的實作。 宣告 ifNum() 函數
bool __fastcall TForm1::ifNum(char & Key)
{
if(Key > 47 && Key < 58) //這是數字 0 - 9 的ASCII 的範圍
return true;
else
return false;
} void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
Edit1->ReadOnly = ifNum(Key) ? false : true; //如果是數字的話,ReadOnly 為 false , 表示可寫進去,不然的話,只能望 Edit 興嘆了。
} 以上ifNum的部分可以自由發揮,因為是由Key來判斷,幾乎可以鎖任何鍵。 發表人 - cosme 於 2003/06/17 09:11:04
|
turboted
版主 發表:95 回覆:754 積分:452 註冊:2002-07-23 發送簡訊給我 |
|
chimera
初階會員 發表:62 回覆:78 積分:28 註冊:2003-03-22 發送簡訊給我 |
引言: 通常我的作法 就是直接在OnKeyPress裏面判斷,例如 void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key) { if(!(Key > 47 && Key < 58)) //這是數字 0 - 9 的ASCII 的範圍 Key = NULL } 這樣一來,只要不是在範圍裏面的,就會變成NULL 我的做法也是放在onkeypress上,只是還可以允許使用者輸入"." , "Enter" , "BackSpace"這三個按鍵,但是"."只能有一個 底下是delphi的語法 procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var tmpstr : string; begin tmpstr := Edit1.Text; if ((key = #8) or ((key >= #48) and (key <= #57)) or (key = #13) or (key = '.')) then begin if ((key = '.') and (pos('.',tmpstr) > 0)) then key := #0; end else key := #0; end; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |