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

如何自動選擇ComboBox,ListBox,FilterComboBox等等裡面的選項?

尚未結案
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-10 11:47:31 IP:219.80.xxx.xxx 未訂閱
我有ComboBox,ListBox,FilterComboBox,FileListBox等等的component,但我現在不想用滑鼠去選擇裡面的item,我要以程式去選擇裡面的item,請問這樣怎麼用程式去表示? 謝謝.
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-10 12:52:24 IP:61.142.xxx.xxx 未訂閱
如果你的ComboBox,ListBox,FileListBox的內容你可以確認的話 ComboBox1->ItemIndex=0; ListBox1->ItemIndex=0; FileListBox1->ItemIndex=0; ItemIndex可以直接指定。 FilterComboBox建議直接控制例: FilterComboBox1->Filter = "exe files|*.exe"; 請參考! Andy Chang
------
Andy Chang
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-10 14:47:57 IP:163.28.xxx.xxx 未訂閱
Sorry.我沒講好我的需求. 假設我的ComboBox的ItemIndex決定之後,要馬上做ListBox新增的動作,那該如何使用? FilterListBox和FileListBox也是要做同樣的動作,在FormCreate時做出 FilterListBox選擇,在FileListBox馬上列出所要的檔案類型.    底下的範例該怎麼修改才能達到我的需求?
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  ComboBox1->Items->Add("1");
  ComboBox1->Items->Add("2");
  ComboBox1->Items->Add("3");
  ComboBox1->ItemIndex=1;      FilterComboBox1->Filter="1|*.exe|2|*.obj";
  FilterComboBox1->FileList=FileListBox1;
  FilterComboBox1->ItemIndex=0;
}
void __fastcall TForm1::ComboBox1Select(TObject *Sender)
{
  switch (ComboBox1->ItemIndex)
  {
   case 0: ListBox1->Items->Add("1"); break;
   case 1: ListBox1->Items->Add("2"); break;
   case 2: ListBox1->Items->Add("3");
  }
}
可否指導一下,謝謝.
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-10 16:06:54 IP:61.218.xxx.xxx 未訂閱
nlj859您好: 試試看是否是您要的,FilterComboBox,FileListBox同理可證
//---------------------------------------------------------------------------    void __fastcall TForm1::ComboBox1Select(TObject *Sender)
{
 ListBox1->Items->Add(ComboBox1->Text);
}
//---------------------------------------------------------------------------
/*生活是一種藝術,用心生活享受生活*/
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-10 16:37:23 IP:163.28.xxx.xxx 未訂閱
Hello axsoft, 還是不行耶,原本我就使用OnSelect這個event試過. ListBox,FilterComboBox,FileListBox都沒有OnSelect這個event. 不曉得還有沒有其它辦法?
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-10 16:47:52 IP:61.142.xxx.xxx 未訂閱
void __fastcall TForm1::FormCreate(TObject *Sender) {   ComboBox1->Items->Add("1");   ComboBox1->Items->Add("2");   ComboBox1->Items->Add("3");   ComboBox1->ItemIndex=1;      FilterComboBox1->Filter="1|*.exe|2|*.obj";   FilterComboBox1->FileList=FileListBox1;   FilterComboBox1->ItemIndex=0;   FileListBox1->Mask=FilterComboBox1->Mask; } void __fastcall TForm1::ComboBox1Select(TObject *Sender) { ListBox1->Items->Add(ComboBox1->Text); // axsoft版主 FileListBox1->Mask=FilterComboBox1->Mask; } 不知是否是你要的? Andy Chang
------
Andy Chang
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-08-10 17:00:56 IP:163.28.xxx.xxx 未訂閱
恩,如果是FilterComboBox和FileListBox可以使用下列方法做到.
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  FilterComboBox1->Filter="1|*.exe|2|*.obj";
  FilterComboBox1->FileList=FileListBox1;
  FilterComboBox1->ItemIndex=1;
  FileListBox1->Mask=FilterComboBox1->Mask;
}
但在ComboBox和ListBox該怎麼做到呢? thx
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-08-10 17:09:11 IP:163.28.xxx.xxx 未訂閱
恩,如果是FilterComboBox和FileListBox可以使用下列方法做到.
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  FilterComboBox1->Filter="1|*.exe|2|*.obj";
  FilterComboBox1->FileList=FileListBox1;
  FilterComboBox1->ItemIndex=1;
  FileListBox1->Mask=FilterComboBox1->Mask;
}
但在ComboBox和ListBox該怎麼做到呢? 我Compile會出現[C Warning] Unit1.cpp(35): W8066 Unreachable code的Warning Message,沒辦法秀出ComboBox1->ItemIndex.
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  ComboBox1->Items->Add("1");
  ComboBox1->Items->Add("2");
  ComboBox1->Items->Add("3");
  ComboBox1->ItemIndex=1;
}
void __fastcall TForm1::ComboBox1Select(TObject *Sender)
{
  switch (ComboBox1->ItemIndex)
  {
   ShowMessage(ComboBox1->ItemIndex);
   case 0: ListBox1->Items->Add("1"); break;
   case 1: ListBox1->Items->Add("2"); break;
   case 2: ListBox1->Items->Add("3");
  }
}
thx 發表人 - nlj859 於 2004/08/10 17:11:09
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-08-10 17:25:04 IP:61.142.xxx.xxx 未訂閱
ListBox也是使用ItemIndex ListBox1->ItemIndex=ComboBox1->ItemIndex; 但相對映的關係要處理好 ComboBox1->Items->Add("1"); ComboBox1->Items->Add("2"); ComboBox1->Items->Add("3"); ListBox1->Items->Add("1"); ListBox1->Items->Add("2"); ListBox1->Items->Add("3"); Andy Chang
------
Andy Chang
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-08-10 17:43:03 IP:163.28.xxx.xxx 未訂閱
似乎不行. 一開始我的ComboBox裡面有3個Item,ListBox裡面現在一個都沒有. 假設我選了第2項(即ComboBox1->IemIndex=1).ListBox裡面會增加一個"2". 現在只需管ComboBox的設定就好.(滑鼠選擇改為程式去選擇,完全不用滑鼠去選擇),以底下範例該如何去做修改?所講的ListBox1->itemIndex=ComboBox1->ItemIndex;該加到哪裡?    
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  ComboBox1->Items->Add("1");
  ComboBox1->Items->Add("2");
  ComboBox1->Items->Add("3");
  ComboBox1->ItemIndex=1;            //假設選了第2項
  ShowMessage(ComboBox1->ItemIndex); //可以秀出1
}    void __fastcall TForm1::ComboBox1Select(TObject *Sender)
{
  switch (ComboBox1->ItemIndex)
  {
   
   case 0: ListBox1->Items->Add("1"); break;
   case 1: ListBox1->Items->Add("2"); 
           ShowMessage(ComboBox1->ItemIndex); //沒辦法秀出1
           break;
   case 2: ListBox1->Items->Add("3");
  }
}
我表達可能不太清楚,請見諒. Thx. 發表人 - nlj859 於 2004/08/10 17:49:42
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-08-11 00:40:48 IP:61.142.xxx.xxx 未訂閱
nlj859:山不轉路轉換個方式表達試試!
void __fastcall TForm1::ComboBox1Select(TObject *Sender)
{
  bool TF=false;
  for (int i=0;i< ListBox1->Items->Count;i  ) {
    if (ListBox1->Items->Strings[i] == ComboBox1->Text) {
      ListBox1->ItemIndex=i;
      TF=true;
    }
  }
  if (! TF) {
    ListBox1->Items->Add(ComboBox1->Text);
    ListBox1->ItemIndex=ListBox1->Items->Count-1;
  }
}
請參考
你選中的ComboBox1傳到ListBox1上除了檢查是否存在外,並且會反白。
Andy Chang
------
Andy Chang
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-08-11 01:16:27 IP:219.80.xxx.xxx 未訂閱
>_<好像還是有點問題.ListBox還是沒東西進來,一定要我用手把滑鼠指標選擇了ComboBox裡面的Item才會有東西出來.    我想我們應該把重點放到這裡:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  ComboBox1->Items->Add("1");
  ComboBox1->Items->Add("2");
  ComboBox1->Items->Add("3");
  ComboBox1->ItemIndex=1;     //假設選了第2項 -->這裡是重點(以程式模擬選擇了第2項)
}
再來就是這裡:
void __fastcall TForm1::ComboBox1Select(TObject *Sender) //ComboBox被選了要做些什麼事?
{
  //現在是不曉得為何ComboBox1->ItemIndex都傳不進來.>_<
  switch (ComboBox1->ItemIndex)
  {
   
   case 0: ListBox1->Items->Add("1"); break;
   case 1: ListBox1->Items->Add("2"); 
           ShowMessage(ComboBox1->ItemIndex); //沒辦法秀出1
           break;
   case 2: ListBox1->Items->Add("3");
  }
}
而Andy Chang的code似乎也是有點問題. 我加了一個ShowMessage在裡面,它完全不理我.
void __fastcall TForm1::ComboBox1Select(TObject *Sender)
{
  bool TF=false;
  ShowMessage("hi"); //不理我>_<
  for (int i=0;i< ListBox1->Items->Count;i  ) {
    if (ListBox1->Items->Strings[i] == ComboBox1->Text) {
      ListBox1->ItemIndex=i;
      TF=true;
    }
  }
  if (! TF) {
    ListBox1->Items->Add(ComboBox1->Text);
    ListBox1->ItemIndex=ListBox1->Items->Count-1;
  }
}
總而言之,為何一定要用手把滑鼠指標選擇了ComboBox裡面的Item才會有東西出來? 知道的人幫助我解決這個問題吧. Thanks a lot!
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-08-11 02:38:12 IP:61.142.xxx.xxx 未訂閱
void __fastcall TForm1::FormCreate(TObject *Sender) {   ComboBox1->Items->Add("1");   ComboBox1->Items->Add("2");   ComboBox1->Items->Add("3");   ComboBox1->ItemIndex=1;     //假設選了第2項 -->這裡是重點(以程式模擬選擇了第2項) ComboBox1Select(Sender); } Andy Chang
------
Andy Chang
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-08-11 06:33:09 IP:219.80.xxx.xxx 未訂閱
果然還是要這樣用.^_^"
系統時間:2024-11-24 20:35:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!