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

有關TMaskEdit的問題

尚未結案
Elaine1981
一般會員


發表:18
回覆:21
積分:7
註冊:2004-08-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-06 20:22:14 IP:203.67.xxx.xxx 未訂閱
請問一下,要使某個TMaskEdit元件,只能輸入整數,只要在屬性EditMask上輸入999999999;0;即可,那如果要使它只能輸入小數,那要在屬性EditMask上輸入什麼呢?謝謝!
allenchan
資深會員


發表:10
回覆:306
積分:283
註冊:2004-01-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-06 21:15:18 IP:61.62.xxx.xxx 未訂閱
\0.9999999999;0;
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-06 22:34:48 IP:61.71.xxx.xxx 未訂閱
引言: \0.9999999999;0;
抱歉, 無意打斷, 更正一下 應該是 \0.9999999;1 否則取得的值都是 099999 或者可用 #.999999;1 因為使用\ 符號會比較不接近我們的輸入方法, 因為 \0 代表0為不可編輯的字元, 也就是說如果要輸入 0.85 , 你必須直接輸入 . 8 5, 因為如果你再輸入 0 . 8 5 得到的結果值是 0.085 如果用 # 就可以比較符合我們的習慣 0 . 8 5
allenchan
資深會員


發表:10
回覆:306
積分:283
註冊:2004-01-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-06 22:42:24 IP:61.62.xxx.xxx 未訂閱
謝謝 P.D. 大大的指正,隨手打下去沒注意到 ~~ 受教了 ~~  但我猜想可能 \
Elaine1981
一般會員


發表:18
回覆:21
積分:7
註冊:2004-08-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-08 00:06:38 IP:203.67.xxx.xxx 未訂閱
不好意思喔…^^,我想你們誤會我的意思了,我的意思是因為我資料庫有個欄位的型態是float,所以我想問的是要讓TMaskEdit只能輸入型態為float的話,要怎麼設定?因為你們提供的最多只能輸入到個位數,就這樣,謝謝!^^
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-08 00:26:41 IP:218.174.xxx.xxx 未訂閱
另類思考    在field的onValidate事件寫    
       if pos('.',sender.asstring)=0 then
   begin
      showmessage('error');
      abort;
   end;    
發表人 - hahalin 於 2004/12/08 00:28:16
allenchan
資深會員


發表:10
回覆:306
積分:283
註冊:2004-01-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-08 09:09:47 IP:61.62.xxx.xxx 未訂閱
配合 hahalin 大大的另類,我也有個另類想法,在 KeyPress 自己處理,採用暴力法(ToDouble 配合 try ... catch),可這方法沒法對付 copy & paste ~~  < class="code"> void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key) { try { if (Edit1->Text != "") { String num = Edit1->Text Key; /* 最好直接拿類似 VB 的 IsNumeric 來做比較不暴力 */ num.ToDouble(); } } catch(...) { Key = 0; } } 發表人 - allenchan 於 2004/12/08 09:27:17
allenchan
資深會員


發表:10
回覆:306
積分:283
註冊:2004-01-06

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-12-08 10:57:33 IP:203.70.xxx.xxx 未訂閱
在 OnChange 做,這樣就可以連 copy & paste 都防到了:
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
    bool dot_found = false;
    String str = Edit1->Text.Trim();
    int sel_start = Edit1->SelStart;
    for (int i = 1; i <= str.Length(); i  ) {
        if (str[ i ] < '0' || str[ i ] > '9') {
            if (str[ i ] == '.') {
                if (dot_found)
                    str.Delete(i--, 1);
                else
                    dot_found = true;
            }
            else {
                str.Delete(i--, 1);
            }
        }
    }
    Edit1->Text = str;
    Edit1->SelStart = sel_start;
}
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-12-08 20:12:05 IP:61.71.xxx.xxx 未訂閱
引言: 不好意思喔…^^,我想你們誤會我的意思了,我的意思是因為我資料庫有個欄位的型態是float,所以我想問的是要讓TMaskEdit只能輸入型態為float的話,要怎麼設定?因為你們提供的最多只能輸入到個位數,就這樣,謝謝!^^
1.從你的第一次發信, 我想我們應該沒有誤會意思吧! 2.不清楚你第二次指出料庫欄位與TMaskEdit 有何關聯哦? 可否再細說. 3.float 的格式就是 9999.9999 的格式, 要到幾位數則整數位給個9 如果是整數, 就不要給小數部份, TMaskEdit 基本上是String結構, 所以沒有 所謂float或integer的區別, 而我們在文中提出的也只是一個依你的需求示範的例子(因為你說只能輸入小數)
系統時間:2024-06-29 12:39:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!