線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2058
推到 Plurk!
推到 Facebook!

CheckBox->Checked 會觸發OnClick 嗎?

尚未結案
xfile
初階會員


發表:21
回覆:80
積分:25
註冊:2004-10-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-15 18:49:15 IP:220.130.xxx.xxx 未訂閱
請問各位在改 CheckBox->Checked 的值時, 會觸發 CheckBox 的 OnClick 事件嗎 ? 我的會這樣耶
Zard
尊榮會員


發表:24
回覆:396
積分:539
註冊:2003-11-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-15 20:40:46 IP:61.62.xxx.xxx 未訂閱
引言: 請問各位在改 CheckBox->Checked 的值時, 會觸發 CheckBox 的 OnClick 事件嗎 ? 我的會這樣耶
會.
xfile
初階會員


發表:21
回覆:80
積分:25
註冊:2004-10-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-16 00:20:03 IP:219.80.xxx.xxx 未訂閱
引言: 會.
這真是奇妙的設計,萬一我在 OnClick 事件中下了個 Close 指令, 又在 OnShow 改變 Checked 值的話,會當場慘死
Zard
尊榮會員


發表:24
回覆:396
積分:539
註冊:2003-11-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-16 09:14:47 IP:210.243.xxx.xxx 未訂閱
引言:
引言: 會.
這真是奇妙的設計,萬一我在 OnClick 事件中下了個 Close 指令, 又在 OnShow 改變 Checked 值的話,會當場慘死 < face="Verdana, Arial, Helvetica"> 我倒覺得很合理啊~ 別忘了UI是設計給使用者用的, 不是給寫程式的人用的, 從使用者的觀點來看, 當用滑鼠點選某個CheckBox時, 觸發OnClick是相當合理的, 而直接設CheckBox->Checked其實就是模擬使用者點下的動作, 這樣想就不覺得奇怪了. 任何元件所呈現給使用者的效果全看寫程式的人如何設計, 如果您要故意在CheckBox的OnClick事件中呼叫Close, 這樣八成會讓用的人覺得莫名其妙吧, 因為 >
xfile
初階會員


發表:21
回覆:80
積分:25
註冊:2004-10-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-17 00:43:57 IP:219.80.xxx.xxx 未訂閱
引言: 我倒覺得很合理啊~ 別忘了UI是設計給使用者用的, 不是給寫程式的人用的, 從使用者的觀點來看, 當用滑鼠點選某個CheckBox時, 觸發OnClick是相當合理的, 而直接設CheckBox->Checked其實就是模擬使用者點下的動作, 這樣想就不覺得奇怪了. 任何元件所呈現給使用者的效果全看寫程式的人如何設計, 如果您要故意在CheckBox的OnClick事件中呼叫Close, 這樣八成會讓用的人覺得莫名其妙吧, 因為 > < face="Verdana, Arial, Helvetica"> 需求不同吧,我接到的是 "按下選項後選單會自動消失" 的要求, 所以就這麼做啦。這是很常有的設計吧,只是鮮少有人用 CheckBox 來做
chris_shieh
高階會員


發表:46
回覆:308
積分:240
註冊:2004-04-26

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-22 12:01:31 IP:219.68.xxx.xxx 未訂閱
其實連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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-23 00:42:42 IP:219.80.xxx.xxx 未訂閱
引言: 其實連SpinEdit.OnChange 也是一樣 你給予新值 SpinEdit.Value:=xx 時一樣也會觸發OnChange事件 之前也是沒想到, 結果往往會出現奇怪的結果 trace 之後才發現 會這樣 TRadioButton也是一樣情形
給予新值就是改變原有的值啊,有變動到原數值的時候會觸發 OnChange 很正常吧 ?
引言: 如果不希望觸發事件 變通方式:在賦予值之前先將事件設成nil 完成設值後再給回 cbTest.OnClick:=nil; cbTest.Checked:=True; cbTest.OnClick:=cbTestClick;
好解 :)
系統時間:2024-11-22 20:17:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!