全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1748
推到 Plurk!
推到 Facebook!

請問CheckListBox有這樣的功能嗎??

尚未結案
spawnpighead
一般會員


發表:5
回覆:6
積分:2
註冊:2005-03-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-09 22:32:24 IP:140.115.xxx.xxx 未訂閱
假設CheckListBox裡有30個項目 如果我要控制當第30個勾勾打下去時(其餘皆勾滿了) 另外一個按鈕的Enabled屬性改變    而當任一個勾勾被取消時 按鈕屬性又要改變 請問有這樣的功能嗎??    以下是很遜的code  XD    
randomize();
int a;
t=0;    a=random(30);
while(CheckListBox1->Checked[a]==true)
  a=random(30);    Edit1->Text=CheckListBox1->Items->Strings[a].c_str();
CheckListBox1->Checked[a]=true;    for(int i=0;i<30;i  )
  {
  if(CheckListBox1->Checked[i]==true)
    t  ;
  }
if(t==30)
  Button1->Enabled=false;
發表人 - spawnpighead 於 2005/08/10 00:47:03
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-09 23:42:09 IP:218.168.xxx.xxx 未訂閱
您好:    PO程式碼的方式與版規說明請參考下面連結,煩請修改謝謝您的配合 >
spawnpighead
一般會員


發表:5
回覆:6
積分:2
註冊:2005-03-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-10 00:48:37 IP:140.115.xxx.xxx 未訂閱
多謝taishyang大的指正 小弟以後會注意 還是請指教我的問題  謝謝
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-10 08:45:48 IP:210.65.xxx.xxx 未訂閱
Hi spawnpighead,    觀念大致如下所述,至於程式碼,我只會 Delphi,先跟你說聲抱歉!
1.定義一個全域變數,並且於 FormCreat 時進行初始化    procedure TForm1.FormCreate(Sender: TObject);
var
  i : integer;
begin
  for i := 0 to CheckListBox1.Items.Count - 1 do
    CheckListBox1.Checked[i] := False;
  Button1.Enabled := False;
  Cnt := 0; //Cnt 為全域變數
end;    2.在該 CheckListBox 的 OnClickCheck 事件,判定是否有 Checked,並且對前述宣告之全域變數進行增減    3.判斷前述之全域變數數值是否與該 CheckListBox.Items.Count 相等,並對 Button 進行控制    procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
begin
  if CheckListBox1.Checked[CheckListBox1.ItemIndex] then
    Cnt := Cnt   1
  else
    Cnt := Cnt - 1;
  Button1.Enabled := (Cnt = CheckListBox1.Items.Count);
end;
PS : Sorry taishyang 大大,小卒過河! 發表人 -
------
Fishman
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-08-10 09:03:19 IP:210.68.xxx.xxx 未訂閱
Fishman前輩:   我只是版面管理員而已,答題還是得靠您
spawnpighead
一般會員


發表:5
回覆:6
積分:2
註冊:2005-03-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-08-11 04:09:49 IP:140.115.xxx.xxx 未訂閱
Fishman大您太客氣了 你的解說非常清楚 我完全不懂Delphi都可以瞭解你的作法 ^^ 我有找到OnClickCheck這個事件 但還是不太清楚他是怎樣使用 當CheckListBox被點到時 是傳回了一個什麼訊息嗎??
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-08-11 08:12:41 IP:210.65.xxx.xxx 未訂閱
Hi spawnpighead,    TCheckListBox 的 OnClickCheck 事件觸發時點: Occurs when the user selects or deselects an item’s check box.    再搭配 CheckListBox1.ItemIndex 確定被點選的為第幾個項次,如此而已,這些屬性你可以參考 Help,裡面都有詳細說明     ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
spawnpighead
一般會員


發表:5
回覆:6
積分:2
註冊:2005-03-06

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-08-16 13:10:05 IP:140.115.xxx.xxx 未訂閱
感謝Fishman大 小弟的拙問已經解決了 只加了下列幾行就行了 < class="code"> for(int i=0;i<30;i ) { if(CheckListBox1->Checked[i]==false) Button1->Enabled=true; } 寫法可能不很簡潔 不過妙用無窮啊 XD
系統時間:2024-05-09 5:23:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!