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

接續~很多CheckBox的問題~~

尚未結案
aresu
一般會員


發表:14
回覆:14
積分:5
註冊:2004-07-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-03 16:26:13 IP:220.130.xxx.xxx 未訂閱
for i := 1 to Length(sChoose) -1 do begin if Copy(sChoose, i, 1) = ',' then for j := 1 to 17 do begin CheckBoxArray[j] := FindComponent('CheckBox' Chr(64 j)) as TCheckBox; // CheckBoxArray[j].OnClick := nil; CheckBoxArray[j].Checked := (Copy(sChoose, i 1, 1) = Chr(64 j)); //or CheckBoxArray[j].Checked; if CheckBoxArray[j].Checked then //計算勾選的項目 fCount := fCount 1; end; end; 在以上程式中~~我希望統計CheckBoxArray[j].Checked的數目~~但因為每個CheckBox的OnClick事件中也都有fCount := fCount 1; 而以上程式似乎會觸發OnClick事件~~使得fCount在以上程式加一次~在OnClick又加一次~~我可以先用CheckBoxArray[j].OnClick := nil;不觸發OnClick事件~~但我該怎麼復原使OnClick正常運作呢~~?
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-03 16:48:10 IP:202.39.xxx.xxx 未訂閱
加入紅色部份試試:
var
  p: TNotifyEvent;
begin
  // ...
  for i := 1 to Length(sChoose) -1 do
  begin
    if Copy(sChoose, i, 1) = ',' then
      for j := 1 to 17 do
      begin
        CheckBoxArray[j] := FindComponent('CheckBox'   Chr(64   j)) as  TCheckBox;
        p := CheckBoxArray[j].OnClick;
        CheckBoxArray[j].OnClick := nil;
        CheckBoxArray[j].Checked := (Copy(sChoose, i 1, 1) = Chr(64   j)); //or CheckBoxArray[j].Checked;
        if CheckBoxArray[j].Checked then //計算勾選的項目
          fCount := fCount   1;
        CheckBoxArray[j].OnClick := p;
      end;
  end;
end; 
-- 向 KTop 的弟兄們致敬! 發表人 - hagar 於 2004/08/03 16:50:26
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-03 17:49:42 IP:61.221.xxx.xxx 未訂閱
aresu 你好: 或許改個方向吧 我的建議 1.CheckBox的OnClick事件  
引言: procedure TForm1.CheckBox1Click(Sender: TObject); begin if TCheckBox(Sender).Checked then TCheckBox(Sender).Tag:=1 else TCheckBox(Sender).Tag:=0; end; (每一個CheckBox都可以用)
2.寫一個Function
引言: Function TForm1.CheckBoxCount:integer; var ....//這裡宣告 ckBoxArray[j] 跟 i,j 請參考 count:integer; begin count:=0; ..//這段就是找出所有的TCheckBox for i := 1 to Length(sChoose) -1 do begin if Copy(sChoose, i, 1) = ',' then for j := 1 to 17 do begin CheckBoxArray[j] := FindComponent('CheckBox' Chr(64 j)) as TCheckBox; count:=ckBoxArray[j].tag count; end; end; Result:=count; end;
------
======================
昏睡~
不昏睡~
不由昏睡~
aresu
一般會員


發表:14
回覆:14
積分:5
註冊:2004-07-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-04 09:54:54 IP:220.130.xxx.xxx 未訂閱
感謝大家~~ 原來這個問題解法那麼多~~讓我學到不少~~ 真的感謝唷~~
系統時間:2024-06-28 19:31:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!