如何讓TEdit元件只能輸入數字 |
|
liangnet
中階會員 ![]() ![]() ![]() 發表:19 回覆:148 積分:83 註冊:2004-01-03 發送簡訊給我 |
小弟近日在研究如何讓使用者只能輸入數字,以下是個人的心得。如果寫的不好獻醜了^^,如果有更好的方法也請前輩指導一下。
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key) { AnsiString A = ((TEdit *)Sender)->Text ; A.Insert(Key,((TEdit *)Sender)->SelStart 1); //如果按下是倒退鍵 if (Key == 0x08) return; if (!TryStrToInt(A,0)) Key = 0; } |
m8815010
版主 ![]() ![]() ![]() ![]() ![]() 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
引言: 小弟近日在研究如何讓使用者只能輸入數字,以下是個人的心得。如果寫的不好獻醜了^^,如果有更好的方法也請前輩指導一下。liangnet你好< >: 若是你的方式,這樣有比較直覺嗎< >?void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key) { AnsiString A = ((TEdit *)Sender)->Text ; A.Insert(Key,((TEdit *)Sender)->SelStart 1); //如果按下是倒退鍵 if (Key == 0x08) return; if (!TryStrToInt(A,0)) Key = 0; } void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key) { if ((Key<48 || Key>57) && Key!=8) Key=0; }這是我喜歡玩的爛招: In Unit.h ~~~ private: // User declarations void __fastcall EditWndProc(TMessage&); TWndMethod OldEditWndProc; ~~~ In Unit.cpp ~~~ __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { OldEditWndProc=Edit1->WindowProc; Edit1->WindowProc=EditWndProc; } void __fastcall TForm1::EditWndProc(TMessage& Message) { if (Message.Msg==WM_CHAR) { if ((Message.WParam<48 || Message.WParam>57) && Message.WParam!=8) return; } OldEditWndProc(Message); }同意思的 |
bigdogchina
版主 ![]() ![]() ![]() ![]() ![]() 發表:238 回覆:523 積分:312 註冊:2003-04-28 發送簡訊給我 |
|
liangnet
中階會員 ![]() ![]() ![]() 發表:19 回覆:148 積分:83 註冊:2004-01-03 發送簡訊給我 |
|
m8815010
版主 ![]() ![]() ![]() ![]() ![]() 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
引言: m8815010你好: 你的方法也不錯,但是好像無法輸入'-'號。 如果設成能輸入+ -號,那如果符號輸入在數字間,那就不是一個數值了。 我的方法有個缺點就是只能接int型態所能表示的範圍2147483647~ -2147483648。 發表人 - liangnet 於 2004/03/26 13:42:27liangnet你好< >: 看了很久,終於了瞭你的意思了< >!一開始不了解為什麼要輸入加減號!後來覺得應該是你要表示正負數用的吧! 1. 我原本的程式不能輸入'-'號是沒錯的,且' '也不行,只有0~9和backspace這11個鍵可以,原因是我看你的題目以為只要這樣做就可以了 |
liangnet
中階會員 ![]() ![]() ![]() 發表:19 回覆:148 積分:83 註冊:2004-01-03 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |