RadioButton的onclick問題 |
答題得分者是:andychang1690
|
kenbcb
中階會員 發表:171 回覆:129 積分:60 註冊:2003-07-15 發送簡訊給我 |
請問各位, 我用了二個RadioButton共用一個OnClick,在發生click時,會出現一個messagebox提示user.
若yes時,進行設定; 若no時,要跳回另一個RadioButton.
可是在按no時,會一直在event中run,請問如何避免這問題,望各位指導!
void __fastcall TFormGDT::RadioButtonCommGSClick(TObject *Sender) { int BoxEcho = MessageBox(Application->Handle,Msg_Communication,"Confirm",MB_YESNO); if(BoxEcho == IDOK) { if(RadioButtonCommH->Checked) GBuffer.Mode = 'H'; else if(RadioButtonL->Checked) GBuffer.Mode = 'L'; } else { if(RadioButtonCommL->Checked) RadioButtonCommH->Checked = true; else if(RadioButtonCommH->Checked) RadioButtonCommL->Checked = true; } //ShowMessage((AnsiString)GBuffer.Mode); } |
limeca
中階會員 發表:2 回覆:74 積分:60 註冊:2005-05-11 發送簡訊給我 |
您好~
會造成這樣的問題是因為您更改了
RadioButtonxxx->Checked = true;
因為有了改變的動作
所以您的
void __fastcall TFormGDT::RadioButtonCommGSClick(TObject *Sender)
會一直被呼叫~
解決方法就是不要在這個裡面
void __fastcall TFormGDT::RadioButtonCommGSClick(TObject *Sender)
有改變RadioButtonxxx->Checked的動作 發表人 - limeca 於 2005/06/23 15:08:02
|
kenbcb
中階會員 發表:171 回覆:129 積分:60 註冊:2003-07-15 發送簡訊給我 |
|
limeca
中階會員 發表:2 回覆:74 積分:60 註冊:2005-05-11 發送簡訊給我 |
您好~
我有一個很笨的方法~
先建立一個function給兩個radiobutton的OnMouseUp用,如下的範例
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,TShiftState Shift, int X, int Y)
{
get=true; RadioButton1->Checked=false;
RadioButton2->Checked=false;
}
再來在你的程式碼加上
if(get){
get=false;
int BoxEcho=MessageBox(Application->Handle,Msg_Communication,"Confirm",MB_YESNO);
if(BoxEcho == IDOK)
{
if(RadioButtonCommH->Checked)
GBuffer.Mode = 'H';
else if(RadioButtonL->Checked)
GBuffer.Mode = 'L';
}
else
{
if(RadioButtonCommL->Checked)
RadioButtonCommH->Checked = true;
else if(RadioButtonCommH->Checked)
RadioButtonCommL->Checked = true;
}
} 發表人 - limeca 於 2005/06/23 19:48:55
|
kenbcb
中階會員 發表:171 回覆:129 積分:60 註冊:2003-07-15 發送簡訊給我 |
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
|
limeca
中階會員 發表:2 回覆:74 積分:60 註冊:2005-05-11 發送簡訊給我 |
哈~~不好意思加錯地方~~
上面那位Andy Chang兄的建議蠻不賴的~~比較簡單
int BoxEcho=MessageBox(Application->Handle,Msg_Communication,"Confirm",MB_YESNO); if(BoxEcho == IDOK) { if(RadioButtonCommH->Checked) GBuffer.Mode = 'H'; else if(RadioButtonL->Checked) GBuffer.Mode = 'L'; } else { if(get){ get=false; if(RadioButtonCommL->Checked) RadioButtonCommH->Checked = true; else if(RadioButtonCommH->Checked) RadioButtonCommL->Checked = true; } } |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |