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

CheckListBox to ListBox------?

答題得分者是:gemi0305
nieo
一般會員


發表:32
回覆:56
積分:17
註冊:2003-07-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-02 11:31:33 IP:210.68.xxx.xxx 未訂閱
請問各位大大: 我在FORM放了兩個按鍵,分別是向右加入鍵,向左刪除鍵,還有一個CheckListBox跟一個ListBox。我的構想如下: 從CheckListBox點選多個選項以後,然後按加入鍵,將所選選項加入到ListBox裡,如果要從ListBox裡刪除,也選選取自己不要的選項以後,在按向左刪除鍵刪除。可是當我按加入鍵以後,卻只能一項一項的加,而從ListBox裡刪除的時候,也不能多個選取後,一次刪除,請問這是什麼問題呢?    我的向右加入件程式碼: int i;   for(i=0;i<=CheckListBox1->Count-1;i++)   {      if(CheckListBox1->State[i]==true)      {         ListBox1->Items->Add(CheckListBox1->Items->Strings[i]);         CheckListBox1->Items->Delete(i);      }   } 向左刪除鍵: for(i=0;iCount;i ) { if(ListBox1->Selected[i]==true) ListBox1->Items->Delete(i); }
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-02 12:02:22 IP:210.66.xxx.xxx 未訂閱
當你刪除一個item之後,要從新開始檢查, 還有listbox要設成MultiSelect < class="code"> __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { ListBox1->MultiSelect=true; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { bool finish = false; while (!finish) { if (CheckListBox1->Count == 0) finish = true; for (int i=0;iCount;i ) { if (CheckListBox1->State[i]==true) { ListBox1->Items->Add(CheckListBox1->Items->Strings[i]); CheckListBox1->Items->Delete(i); break; } if (i == CheckListBox1->Count-1) finish = true; } } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { bool finish = false; while (!finish) { if (ListBox1->Count == 0) finish = true; for (int i=0;iCount;i ) { if (ListBox1->Selected[i] == true) { ListBox1->Items->Delete(i); break; } if (i == ListBox1->Count-1) finish = true; } } } 國泰平安
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-02 12:03:47 IP:61.221.xxx.xxx 未訂閱
引言: 請問各位大大: 我在FORM放了兩個按鍵,分別是向右加入鍵,向左刪除鍵,還有一個CheckListBox跟一個ListBox。我的構想如下: 從CheckListBox點選多個選項以後,然後按加入鍵,將所選選項加入到ListBox裡,如果要從ListBox裡刪除,也選選取自己不要的選項以後,在按向左刪除鍵刪除。可是當我按加入鍵以後,卻只能一項一項的加,而從ListBox裡刪除的時候,也不能多個選取後,一次刪除,請問這是什麼問題呢? 我的向右加入件程式碼: int i; for(i=0;i<=CheckListBox1->Count-1;i ) { if(CheckListBox1->State[i]==true) { ListBox1->Items->Add(CheckListBox1->Items->Strings[i]); CheckListBox1->Items->Delete(i); } } 向左刪除鍵: for(i=0;iCount;i ) { if(ListBox1->Selected[i]==true) ListBox1->Items->Delete(i); }
nieo 你好:
(1)先把 ListBox1 的 MultiSelect 屬性設為 true
(2)加入以下的程式碼再試試看
   向右鍵:
   int i;
   for(i=0; iCount; i  )
   {
      if(CheckListBox1->Checked[i])
      {
         ListBox1->Items->Add(CheckListBox1->Items->Strings[i]);
         CheckListBox1->Items->Delete(i);
      }
   }
   ListBox1->Sorted=true;
   向左鍵:
   int i=0;
   for(i=0; iCount; i  )
   {
      if(ListBox1->Selected[i])
      {
         CheckListBox1->Items->Add(ListBox1->Items->Strings[i]);
         ListBox1->Items->Delete(i);
      }
   }
   CheckListBox1->Sorted=true;
-- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2003/09/02 12:07:00
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-02 12:15:49 IP:61.218.xxx.xxx 未訂閱
注意 count 問題    
       
向右鍵:
   int i;
   for(i=(CheckListBox1->Count-1); i>=0; i--)
   {
      if(CheckListBox1->Checked[i])
      {
         ListBox1->Items->Add(CheckListBox1->Items->Strings[i]);
         CheckListBox1->Items->Delete(i);
      }
   }
   ListBox1->Sorted=true;
   向左鍵:
   int i=0;
   for(i=(ListBox1->Count-1); i>=0; i--)
   {
      if(ListBox1->Selected[i])
      {
         CheckListBox1->Items->Add(ListBox1->Items->Strings[i]);
         ListBox1->Items->Delete(i);
      }
   }
   CheckListBox1->Sorted=true;
------
︿︿
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-02 13:00:13 IP:210.66.xxx.xxx 未訂閱
剛剛在吃飯的時候,突然想到一個更簡單的方法,參考看看 各別為右鍵和左鍵: < class="code"> void __fastcall TForm1::Button3Click(TObject *Sender) { for (int i=0;iCount;i ) { if (CheckListBox1->State[i]==true) { ListBox1->Items->Add(CheckListBox1->Items->Strings[i]); CheckListBox1->Items->Delete(i); i--; } } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) { for (int i=0;iCount;i ) { if (ListBox1->Selected[i] == true) { ListBox1->Items->Delete(i); i--; } } } 國泰平安 發表人 - Gemi0305 於 2003/09/02 13:02:37
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-09-02 13:03:46 IP:61.221.xxx.xxx 未訂閱
引言: 注意 count 問題
       
向右鍵:
   int i;
   for(i=(CheckListBox1->Count-1); i>=0; i--)
   {
      if(CheckListBox1->Checked[i])
      {
         ListBox1->Items->Add(CheckListBox1->Items->Strings[i]);
         CheckListBox1->Items->Delete(i);
      }
   }
   ListBox1->Sorted=true;
   向左鍵:
   int i=0;
   for(i=(ListBox1->Count-1); i>=0; i--)
   {
      if(ListBox1->Selected[i])
      {
         CheckListBox1->Items->Add(ListBox1->Items->Strings[i]);
         ListBox1->Items->Delete(i);
      }
   }
   CheckListBox1->Sorted=true;
cmf 你好: 是的,的確會有問題,謝謝你的告知,改成 while 迴圈應該就可以了
向右鍵(新增):
void __fastcall TForm1::Button2Click(TObject *Sender)
{
   int i=0;
   while(iCount)
   {
      if(CheckListBox1->Checked[i])
      {
         ListBox1->Items->Add(CheckListBox1->Items->Strings[i]);
         CheckListBox1->Items->Delete(i);
      }
      else
      {
         i  ;
      }
   }
   ListBox1->Sorted=true;
}    向左鍵(刪除):
void __fastcall TForm1::Button3Click(TObject *Sender)
{
   int i=0;
   while(iCount)
   {
      if(ListBox1->Selected[i])
      {
         CheckListBox1->Items->Add(ListBox1->Items->Strings[i]);
         ListBox1->Items->Delete(i);
      }
      else
      {
         i  ;
      }
   }
   CheckListBox1->Sorted=true;
}
-- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
nieo
一般會員


發表:32
回覆:56
積分:17
註冊:2003-07-25

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-09-02 20:20:46 IP:210.68.xxx.xxx 未訂閱
感謝各位大大的解答!!
macrojackson
一般會員


發表:1
回覆:2
積分:0
註冊:2004-08-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-10-06 15:38:19 IP:218.14.xxx.xxx 未訂閱
TListBox有一個DeleteSelected函數,直接使用即可。 ----- virtual void _fastcall DeleteSelected(void) = 0; Description: Call DeleteSelected to delete the selected items from the list box.
系統時間:2024-05-02 23:32:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!