CheckBox->Checked 會觸發OnClick 嗎? |
尚未結案
|
xfile
初階會員 發表:21 回覆:80 積分:25 註冊:2004-10-02 發送簡訊給我 |
|
Zard
尊榮會員 發表:24 回覆:396 積分:539 註冊:2003-11-26 發送簡訊給我 |
|
xfile
初階會員 發表:21 回覆:80 積分:25 註冊:2004-10-02 發送簡訊給我 |
|
Zard
尊榮會員 發表:24 回覆:396 積分:539 註冊:2003-11-26 發送簡訊給我 |
引言:引言: 會.這真是奇妙的設計,萬一我在 OnClick 事件中下了個 Close 指令, 又在 OnShow 改變 Checked 值的話,會當場慘死 >>< face="Verdana, Arial, Helvetica"> 我倒覺得很合理啊~ 別忘了UI是設計給使用者用的, 不是給寫程式的人用的, 從使用者的觀點來看, 當用滑鼠點選某個CheckBox時, 觸發OnClick是相當合理的, 而直接設CheckBox->Checked其實就是模擬使用者點下的動作, 這樣想就不覺得奇怪了. 任何元件所呈現給使用者的效果全看寫程式的人如何設計, 如果您要故意在CheckBox的OnClick事件中呼叫Close, 這樣八成會讓用的人覺得莫名其妙吧, 因為 > |
xfile
初階會員 發表:21 回覆:80 積分:25 註冊:2004-10-02 發送簡訊給我 |
引言: 我倒覺得很合理啊~ 別忘了UI是設計給使用者用的, 不是給寫程式的人用的, 從使用者的觀點來看, 當用滑鼠點選某個CheckBox時, 觸發OnClick是相當合理的, 而直接設CheckBox->Checked其實就是模擬使用者點下的動作, 這樣想就不覺得奇怪了. 任何元件所呈現給使用者的效果全看寫程式的人如何設計, 如果您要故意在CheckBox的OnClick事件中呼叫Close, 這樣八成會讓用的人覺得莫名其妙吧, 因為 > >>< face="Verdana, Arial, Helvetica"> 需求不同吧,我接到的是 "按下選項後選單會自動消失" 的要求, 所以就這麼做啦。這是很常有的設計吧,只是鮮少有人用 CheckBox 來做 |
chris_shieh
高階會員 發表:46 回覆:308 積分:240 註冊:2004-04-26 發送簡訊給我 |
其實連SpinEdit.OnChange 也是一樣
你給予新值 SpinEdit.Value:=xx 時一樣也會觸發OnChange事件 之前也是沒想到, 結果往往會出現奇怪的結果
trace 之後才發現 會這樣
procedure TCustomCheckBox.SetState(Value: TCheckBoxState); begin if FState <> Value then begin FState := Value; if HandleAllocated then SendMessage(Handle, BM_SETCHECK, Integer(FState), 0); if not ClicksDisabled then Click; end; end;TRadioButton也是一樣情形 如果不希望觸發事件 變通方式:在賦予值之前先將事件設成nil 完成設值後再給回 cbTest.OnClick:=nil; cbTest.Checked:=True; cbTest.OnClick:=cbTestClick; 發表人 - chris_shieh 於 2004/12/22 12:02:51 |
xfile
初階會員 發表:21 回覆:80 積分:25 註冊:2004-10-02 發送簡訊給我 |
引言: 其實連SpinEdit.OnChange 也是一樣 你給予新值 SpinEdit.Value:=xx 時一樣也會觸發OnChange事件 之前也是沒想到, 結果往往會出現奇怪的結果 trace 之後才發現 會這樣 TRadioButton也是一樣情形給予新值就是改變原有的值啊,有變動到原數值的時候會觸發 OnChange 很正常吧 ? 引言: 如果不希望觸發事件 變通方式:在賦予值之前先將事件設成nil 完成設值後再給回 cbTest.OnClick:=nil; cbTest.Checked:=True; cbTest.OnClick:=cbTestClick;好解 :) |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |