[delphi]ComboBox實現顯示文本與值不同的方法

來源:互聯網
上載者:User

在html的select下拉框標籤裡,option選項可以單獨設定一個值,可以和顯示的文本不同,但在delphi中,下拉框組件ComboBox卻無法直接像它一樣,賦予一個單獨的值,但是我們可以通過其他方法來實現,我們先來試試比較偏門的方法。

1.通過兩個ComboBox組件來實現

示範圖:

 

procedure TForm1.FormCreate(Sender: TObject);begin  cbb1.items.Add('a');  cbb1.Items.Add('b');  cbb2.Items.Add('1');  cbb2.Items.Add('2');//  cbb2.Visible := False;end;procedure TForm1.cbb1Select(Sender: TObject);var  selecti: Integer;begin  selecti := cbb1.ItemIndex;  cbb2.ItemIndex := selecti;  mmo1.Text := '文字為:' + cbb1.Items[selecti] + ' 值為:' + cbb2.Items[selecti];end;

在實際應用的時候,隱藏掉用於儲存值的內容的combobox即可。

 

2.使用tstringlist或者數組來儲存值

這種方法實際上跟用2個Combobox類似,只是效率上應該更高,因為使用了更少的介面控制項。

 

var  list: TStringList;procedure TForm1.FormCreate(Sender: TObject);begin  list := TStringList.Create;  cbb1.items.Add('a');  cbb1.Items.Add('b');  list.Add('1');  list.Add('2');end;procedure TForm1.cbb1Select(Sender: TObject);var  selecti: Integer;begin  selecti := cbb1.ItemIndex;  mmo1.Text := '文字為:' + cbb1.Items[selecti] + ' 值為:' + list.Strings[selecti];end;

以上方法可以說是相對偏一些,我是基於一些網友提供的想法來實現的,另外其實還可以直接使用Combobox本身的東西來實現,這個感覺上更正宗一點,也不需要用到’額外'的控制項了。

 

使用Combobox提供的AddItem的方法:

 

procedure AddItem(Item: String; AObject: TObject);

Item:添加項的字串值。

AObject:關聯的對象。

AddItem方法添加項目,並同時與AObject對象進行關聯,並可以讀取、修改被關聯對象,這裡我們就利用它這一特性,把項目的真實值給關聯到每一個項去,就實現了顯示內容與值的不同了。

 

procedure TForm1.FormCreate(Sender: TObject);var  classid: TStrings;  i: Integer;begin  classid := TStringList.Create;  classid.LoadFromFile('d:\document\desktop\classid.txt');  for i:=0 to classid.Count -1 do  begin    //添加項,關聯值    cbb1.AddItem(classid.ValueFromIndex[i], TObject(StrToInt(classid.Names[i])));  end;  classid.Free;end;procedure TForm1.cbb1Select(Sender: TObject);begin  edt1.Text := IntToStr(Integer(cbb1.Items.Objects[cbb1.ItemIndex]));  edt2.Text := cbb1.Items[cbb1.itemIndex];end;

classid.txt的部分內容為:

 

 

11=電腦硬體/顯示器/電腦周邊1101=膝上型電腦1201=MP3/MP4/iPod/錄音筆

效果示範:

 



 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.