"CSpinEdit"如何在超過一定範圍,還是顯示原來的數字 |
答題得分者是:gemi0305
|
kimi
一般會員 ![]() ![]() 發表:37 回覆:76 積分:22 註冊:2003-07-17 發送簡訊給我 |
void __fastcall TForm1::CSpinEdit1Change(TObject *Sender)
{
if(CSpinEdit1->Text!="")
{
if (CSpinEdit1->Text.ToInt()>50)
CSpinEdit1->Text="0";
if(CSpinEdit1->Text.ToInt()<0)
CSpinEdit1->Text="50";
}
}
可否幫我想一下
例如:
如果先輸入46(在0~50中)
如果在輸入99(超過50的數字)
還是顯示出46
|
dllee
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
引言:請多一個變數來存 CSpinEdit 在被修改前的數值,例如:void __fastcall TForm1::CSpinEdit1Change(TObject *Sender) { if(CSpinEdit1->Text!="") { if (CSpinEdit1->Text.ToInt()>50) CSpinEdit1->Text="0"; if(CSpinEdit1->Text.ToInt()<0) CSpinEdit1->Text="50"; } }可否幫我想一下 例如: 如果先輸入46(在0~50中) 如果在輸入99(超過50的數字) 還是顯示出46 int iCSEvalue; void __fastcall TForm1::CSpinEdit1Change(TObject *Sender) { if(CSpinEdit1->Text!="") { if(CSpinEdit1->Text.ToInt()>=0 && CSpinEdit1->Text.ToInt()<=50) iCSEvalue=CSpinEdit1->Text.ToInt(); CSpinEdit1->Text=IntToStr(iCSEvalue); } }只有在數值是正確時,才存入 iCSEvalue , CSpinEdit 每次都顯示 iCSEvalue 的數值。 而 iCSEvalue 變數可以放在 TForm1 內或是整體變數。 另外,用按下 Enter 時再來判斷可能會比較好。 void __fastcall TForm1::CSpinEdit1KeyPress(TObject *Sender, char &Key) { if(Key==0x0D) // 按 Enter 鍵 { if(CSpinEdit1->Text.ToInt()>=0 && CSpinEdit1->Text.ToInt()<=50) iCSEvalue=CSpinEdit1->Text.ToInt(); CSpinEdit1->Text=IntToStr(iCSEvalue); } }沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell.... 發表人 - dllee 於 2003/08/04 18:37:34
------
http://www.ViewMove.com |
kimi
一般會員 ![]() ![]() 發表:37 回覆:76 積分:22 註冊:2003-07-17 發送簡訊給我 |
|
gemi0305
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:81 回覆:564 積分:629 註冊:2003-05-11 發送簡訊給我 |
|
kimi
一般會員 ![]() ![]() 發表:37 回覆:76 積分:22 註冊:2003-07-17 發送簡訊給我 |
|
gemi0305
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:81 回覆:564 積分:629 註冊:2003-05-11 發送簡訊給我 |
kimi你好, 參考以下程式碼,已能做到你所說的,
但這不能完全解決,差不能keep 5、6、7、8、9這五個數字,其他都可以。
因為就如前幾篇所說,你要key 50以上的數字時,會先打這五個數字,
所以如果keep的話,輸入50以前的數字,就只能顯示他十位數, 還有,因為寫的很趕,可能要請你幫我看看還有沒有其他bug~
|
kimi
一般會員 ![]() ![]() 發表:37 回覆:76 積分:22 註冊:2003-07-17 發送簡訊給我 |
|
gemi0305
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:81 回覆:564 積分:629 註冊:2003-05-11 發送簡訊給我 |
kimi你好~ 呵~ 我上篇有說了嘛...5~9 我沒keep阿...
因為,我舉個例好了
假使說,你先打一個4(會先被keep住),再輸入66這個數字,
你會先在CSpinEdit上打一個"6"再打一個"6"
當在打第一個"6"的時候,onChange()就啟動了,
所以這個"6"就被"keep"住了,然後當再打一個"6"的時候(因為是66)
因為超過50,所以他會還原之前被keep的資料,
就是"6",而不是之前的那個"4"。 所以當在5~9時,我就不去keep它,
因為我不知道使用者是打的這個6,真的只是6嗎?
還是再等一下又在這個6後面再加一個6...結果超過50了~ 但我相信,應該會有解決的辨法,
不過會是更複雜的判斷...
|
kimi
一般會員 ![]() ![]() 發表:37 回覆:76 積分:22 註冊:2003-07-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |