TDBEdit元件限制輸入的數字範圍 |
答題得分者是:P.D.
|
con99
一般會員 發表:1 回覆:2 積分:5 註冊:2011-03-28 發送簡訊給我 |
各位前輩好: 有一個欄位使用TDBEdit元件,想限制輸入的數字範圍, 例如: 有一個 '重量'(值的範圍為0.0~99.9)的欄位, 每當輸入的值超過最高上限時,程式都會中斷,且出現錯誤訊息 但我希望能夠程式不中斷,出現**自訂的錯誤訊息**,焦點仍停留在該欄位 ,不能移至其它欄位。 因在2~3個from都會用到,且約有10個左右的欄位,每個欄位的值範圍 還都不一樣。 這該如何解決?能夠只有寫一個函式就解決嗎? 目前有找到TQuery->TFloatField中的MaxValue、MinValue 但不知道要如何使用 T_T~
剛學Delphi不久, 爬文爬到眼冒星星 Q_Q 還請各位前輩指點一二,感謝~
------
健忘老人....Orz |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
你可以直接利用 TFieldl中的 EditMask 來指定即可
例如 myTable.Open; myTable.FieldByName('myField').EditMask:= '99.9;0'; =============引 用 con99 文 章=================== 各位前輩好: 有一個欄位使用TDBEdit元件,想限制輸入的數字範圍, 例如: 有一個 '重量'(值的範圍為0.0~99.9)的欄位, 每當輸入的值超過最高上限時,程式都會中斷,且出現錯誤訊息 但我希望能夠程式不中斷,出現**自訂的錯誤訊息**,焦點仍停留在該欄位 ,不能移至其它欄位。 因在2~3個from都會用到,且約有10個左右的欄位,每個欄位的值範圍 還都不一樣。 這該如何解決?能夠只有寫一個函式就解決嗎? 目前有找到TQuery->TFloatField中的MaxValue、MinValue 但不知道要如何使用 T_T~
剛學Delphi不久, 爬文爬到眼冒星星? Q_Q 還請各位前輩指點一二,感謝~ |
con99
一般會員 發表:1 回覆:2 積分:5 註冊:2011-03-28 發送簡訊給我 |
前輩謝謝
這樣設是OK, 但EditMask不太好用T_T... 後來我的解決方法是在OnSetText下,寫檢查的程式,且設定MaxValue 本來是要寫在OnValidate下, 但還是會中斷程式,出現錯誤訊息 Orz.... 只好改寫在OnSetText下 [code delphi] procedure TF.NumberCheckSetText(Sender: TField; const Text: String); var num, MaxNum : Double; s_num, s_MaxNum:string; begin num:= strtofloat(Text); MaxNum := TFloatField(Sender).MaxValue; s_num := floattostr(num); s_MaxNum := floattostr(MaxNum); g_NowForm.SetFocus; //g_NowForm是存現在是在哪個視窗 if ( num > MaxNum) then begin MessageBox(handle, PChar('您輸入' s_num ',已超過此欄位的上限值:' s_MaxNum), '警告訊息!!',MB_Iconwarning); Sender.AsFloat := MaxNum; abort; end else begin Sender.AsFloat := num; end; end; [/code] ===================引 用 P.D. 文 章=================== 你可以直接利用 TFieldl中的 EditMask 來指定即可 例如 myTable.Open; myTable.FieldByName('myField').EditMask:= '99.9;0';
------
健忘老人....Orz |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |