hango
一般會員
發表:5 回覆:10 積分:3 註冊:2004-04-06
發送簡訊給我
|
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
發送簡訊給我
|
試試用onExit 取代onChang 看看可不可行 ~悠遊法國號~
|
hango
一般會員
發表:5 回覆:10 積分:3 註冊:2004-04-06
發送簡訊給我
|
要怎麼用OnExit取代OnChange啊??
我的OnChange事件是用在當輸入現金時利用OnChange來改變"找零"欄位,
也就是說當應付金額為20時,我只要在"現金"欄輸入100,"找零"欄就會立刻顯示80!
|
ENIX007
高階會員
發表:28 回覆:274 積分:185 註冊:2003-11-27
發送簡訊給我
|
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
發送簡訊給我
|
//--------------------------------------------------------------------------- #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
發送簡訊給我
|
|
ENIX007
高階會員
發表:28 回覆:274 積分:185 註冊:2003-11-27
發送簡訊給我
|
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
發送簡訊給我
|
喔~~~原來如此啊!!
對了~~~大哥~~~你說可以指過去就不用重複寫~~~我有看了你之前的解說...
可是還是不太懂耶???可以麻煩你以我的程式作說明嗎??
因為我剛接觸...所以可能會有一些蠢問題(向清空時會出現錯誤的原因^^)
希望你不要介意!!也感謝你的說明!!^^
|
hango
一般會員
發表:5 回覆:10 積分:3 註冊:2004-04-06
發送簡訊給我
|
對了~~~我照您的方法把值設成零還是出現一樣的錯誤耶...
怎麼會這樣啊???
|
ENIX007
高階會員
發表:28 回覆:274 積分:185 註冊:2003-11-27
發送簡訊給我
|
hango您好
呵呵...我怎麼會介意呢,只要有心學習的人我都願意一起討論
> 程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
------ 程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
|
hango
一般會員
發表:5 回覆:10 積分:3 註冊:2004-04-06
發送簡訊給我
|
ENIX007大哥~~~真是太感謝你了!!!
我又學到了不少!!
感激不盡啊!!!
|