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

請問關於"OnChange"及清空Edit的問題!!

尚未結案
hango
一般會員


發表:5
回覆:10
積分:3
註冊:2004-04-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-07 00:30:28 IP:140.127.xxx.xxx 未訂閱
1.請問一下~~~小弟在程式中Edit的部分加了OnChange事件, 結果無法清空這個Edit(Edit->Text=""),請問要怎麼辦才能正確讓Edit清空啊?? 2.小弟在同一個Edit裡加了OnKeyPress事件,但我希望這個Edit一開始是ReadOnly,可是我加了OnKeyPress事件後,我設定的ReadOnly=true就失效了! 請問要怎麼解決啊? 發表人 - taishyang 於 2004/04/07 00:42:03
yachanga
資深會員


發表:24
回覆:335
積分:296
註冊:2003-09-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-07 01:06:04 IP:61.225.xxx.xxx 未訂閱
試試用onExit 取代onChang 看看可不可行    ~悠遊法國號~
hango
一般會員


發表:5
回覆:10
積分:3
註冊:2004-04-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-07 02:00:15 IP:140.127.xxx.xxx 未訂閱
要怎麼用OnExit取代OnChange啊?? 我的OnChange事件是用在當輸入現金時利用OnChange來改變"找零"欄位, 也就是說當應付金額為20時,我只要在"現金"欄輸入100,"找零"欄就會立刻顯示80!
ENIX007
高階會員


發表:28
回覆:274
積分:185
註冊:2003-11-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-07 16:51:43 IP:210.243.xxx.xxx 未訂閱
hango您好 我使用了3個Edit,分別是 Edit1:應付金額<---固定20 Edit2:現金 Edit3:找零    Edit2的OnChange事件程式碼 Edit3->Caption = Edit2->Caption.ToInt()-Edit1->Caption.ToInt();    只要現金欄位輸入的是數字,基本上找零欄位就會即時顯示正確的數值...    1.因此不知您Edit清空要用在哪?清空可以用Edit1->Clear();試試看,不過 基本上應該一樣的... 2.我將Edit2屬性ReadOnly設為true,在OnKeyPress事件程式碼 Edit3->Text = "OK"; 此時當Focus在Edit2時按任意鍵,則Edit3顯示OK,Edit2無任何顯示... 也就是並沒有發生您說的問題...    能否請您把程式碼放上來讓大家看看呢 程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
------
程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
hango
一般會員


發表:5
回覆:10
積分:3
註冊:2004-04-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-08 05:55:10 IP:140.127.xxx.xxx 未訂閱
//---------------------------------------------------------------------------    #include  #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Edit5->ReadOnly=false; Label16->Caption=""; Label15->Caption=""; int juice=30,mlk=20,blk=10,total; if (chk1->Checked==true) juice*=0.8; if (chk2->Checked==true) mlk*=0.8; if(chk3->Checked==true) blk*=0.8; if(Edit1->Text=="") {Edit1->Text=0; } if(Edit2->Text=="") {Edit2->Text=0; } if(Edit3->Text=="") {Edit3->Text=0; } if(chk1->Checked||chk2->Checked||chk3->Checked==true) { Label15->Caption="特價品打8折"; } total=StrToInt(Edit1->Text)*juice StrToInt(Edit2->Text)*mlk StrToInt(Edit3->Text)*blk; if(stud->Checked==true) {total*=0.9; Label10->Caption="學生總價打9折"; } if(rb2->Checked==true) {total*=0.8; Label10->Caption="員工總價打8折"; } if(general->Checked==true) {total=total; Label10->Caption=""; } if(chk1->Checked||chk2->Checked||chk3->Checked||stud->Checked||rb2->Checked==true) { Label16->Caption="說明:"; } else { Label16->Caption=""; } Edit4->Text=IntToStr(total); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { Edit1->Text=""; Edit2->Text=""; Edit3->Text=""; Edit4->Text=""; Edit6->Text=""; Edit5->ReadOnly=true; Label15->Caption=""; Label16->Caption=""; Label10->Caption=""; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key) { if(!(Key > 47 && Key < 58 ||Key==8)) {Key = NULL; Label16->Caption="說明"; Label15->Caption="輸入錯誤!!請重新輸入!"; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Edit2KeyPress(TObject *Sender, char &Key) { if(!(Key > 47 && Key < 58 ||Key==8)) {Key = NULL; Label16->Caption="說明"; Label15->Caption="輸入錯誤!!請重新輸入!"; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Edit3KeyPress(TObject *Sender, char &Key) { if(!(Key > 47 && Key < 58 ||Key==8)) {Key = NULL; Label16->Caption="說明"; Label15->Caption="輸入錯誤!!請重新輸入!"; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Edit5KeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if(!(Key > 47 && Key < 58 ||Key==8)) {Key = NULL; Label16->Caption="說明"; Label15->Caption="輸入錯誤!!請重新輸入!"; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Edit5Change(TObject *Sender) { Edit6->Text=IntToStr(StrToInt(Edit5->Text)-StrToInt(Edit4->Text)); } //---------------------------------------------------------------------------
hango
一般會員


發表:5
回覆:10
積分:3
註冊:2004-04-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-08 05:59:05 IP:140.127.xxx.xxx 未訂閱
當我在Button2Click事件中加入Edit5->Text="",執行時就會產生錯誤!! 完整程式碼 http://203.64.91.151:3122/1092205139-01.zip 感謝大大熱心回應啊!!
ENIX007
高階會員


發表:28
回覆:274
積分:185
註冊:2003-11-27

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-08 09:05:29 IP:210.243.xxx.xxx 未訂閱
hango您好 Edit5不能清空的原因是當執行到 Edit5->Text = "";時, 會觸發Edit5的OnChange事件,因此會跑出""不是integer的訊息... 如果不要設成"",而是設成0就不會有錯誤了,另外ReadOnly的問題 您的程式碼並不會發生阿,該不會是您還沒按下Button2吧 另外重複的程式碼不用寫那麼多次喔( href="http://delphi.ktop.com.tw/topic.php?TOPIC_ID=41803">http://delphi.ktop.com.tw/topic.php?TOPIC_ID=41803 有問題再討論 程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
------
程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
hango
一般會員


發表:5
回覆:10
積分:3
註冊:2004-04-06

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-08 15:27:55 IP:140.127.xxx.xxx 未訂閱
喔~~~原來如此啊!! 對了~~~大哥~~~你說可以指過去就不用重複寫~~~我有看了你之前的解說... 可是還是不太懂耶???可以麻煩你以我的程式作說明嗎?? 因為我剛接觸...所以可能會有一些蠢問題(向清空時會出現錯誤的原因^^) 希望你不要介意!!也感謝你的說明!!^^
hango
一般會員


發表:5
回覆:10
積分:3
註冊:2004-04-06

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-04-08 15:32:48 IP:140.127.xxx.xxx 未訂閱
對了~~~我照您的方法把值設成零還是出現一樣的錯誤耶... 怎麼會這樣啊???
ENIX007
高階會員


發表:28
回覆:274
積分:185
註冊:2003-11-27

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-04-08 15:48:22 IP:210.243.xxx.xxx 未訂閱
hango您好 呵呵...我怎麼會介意呢,只要有心學習的人我都願意一起討論 > 程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
------
程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
hango
一般會員


發表:5
回覆:10
積分:3
註冊:2004-04-06

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-04-08 16:29:29 IP:140.127.xxx.xxx 未訂閱
ENIX007大哥~~~真是太感謝你了!!! 我又學到了不少!! 感激不盡啊!!!
系統時間:2024-05-21 2:53:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!