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

為了不讓使用者輸入錯誤的資料型態,如何鎖鍵盤?

 
cosme
一般會員


發表:5
回覆:4
積分:1
註冊:2002-12-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-17 09:07:46 IP:61.222.xxx.xxx 未訂閱
這個問題,也困擾了我很久 一般我的作法是等使用者輸入完了之後,做一個檢查,判斷是否和我要的資料型態相符,如果是,可以離開,如果否,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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-17 09:14:31 IP:210.241.xxx.xxx 未訂閱
通常我的作法 就是直接在OnKeyPress裏面判斷,例如 void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key) { if(!(Key > 47 && Key < 58)) //這是數字 0 - 9 的ASCII 的範圍 Key = NULL } 這樣一來,只要不是在範圍裏面的,就會變成NULL
chimera
初階會員


發表:62
回覆:78
積分:28
註冊:2003-03-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-18 16:39:27 IP:203.69.xxx.xxx 未訂閱
引言: 通常我的作法 就是直接在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; 
系統時間:2024-06-27 1:08:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!