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

TListBox 一問

尚未結案
SuperLowB
初階會員


發表:96
回覆:77
積分:34
註冊:2003-06-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-18 16:46:49 IP:203.198.xxx.xxx 未訂閱
請問如何可以在TListBox裏的每一個item的背後記一個value e.g. Listbox有3個items-> a,b,c 當我選擇'a'時,我拿它背後的value'A001' 當我選擇'b'時,我拿它背後的value'A236' 當我選擇'c'時,我拿它背後的value'A222'
chris_shieh
高階會員


發表:46
回覆:308
積分:240
註冊:2004-04-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-18 18:09:43 IP:218.167.xxx.xxx 未訂閱
如果一定限制要跟著元件本身 TListbox.Items 因為是 TStrings 無法提供此功能 除非你另外用 TStringList, TList 把對應值放到對應位置    或是可以考慮用 TListView  TListView.Items 是 TListItems TListItem 本身有一個 TListItem.Data : Pointer 可以用來儲存資訊 ex:
procedure TfmMain.Button1Click(Sender: TObject);
var
  col:TListColumn;
begin
  ListView1.ViewStyle:=vsReport;
  col:=ListView1.Columns.Add;
  col.Caption:='title';
end;    procedure TfmMain.KeypanelClick(Sender: TObject);
var
  aItem:TListItem;
  pData:PString;
begin
  aItem:=ListView1.Items.Add;
  aItem.Caption:='test'   IntToStr(aItem.Index);
  new(pData);
  pData^:='value'  IntToStr(aItem.Index);
  aItem.Data:=pData;
end;    procedure TfmMain.ListView1SelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
var
  pData:PString;
begin
  pData:=PString(Item.Data);
  Showmessage(pData^);
end;
@瞭解越多.懂得越少@
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-18 19:13:22 IP:60.248.xxx.xxx 未訂閱
引言: TListbox.Items 因為是 TStrings 無法提供此功能
更正一下觀念!! TStrings 是個虛擬類別,不可以用它來建立實體物件,必須使用它的後代類別來建立物件,而TStrings 已事先宣告一些關於Objects的相關虛擬方法,所以原則上,應該都可以使用到TStrings.Objects。 所以對於SuperLowB 的需求可以用以下方法來處理
1.建立ListBox 的Items
Var
  pData:PString;  // 借用 chris_shieh 兄的變數名稱 
begin
  new(pData);
  pData^:='A001';
  ListBox1.Items.AddObject('A',TObject(pData));
  new(pData);
  pData^:='A236';
  ListBox1.Items.AddObject('B',TObject(pData));
  new(pData);
  pData^:='A222';
  ListBox1.Items.AddObject('C',TObject(pData));
end;    2.在 ListBox.OnClick 事件中,反應Objects的值
procedure TForm1.ListBox1Click(Sender: TObject);
Var
  pData:PString;
begin
  If ListBox1.ItemIndex <> -1 Then Begin
    pData:=PString(ListBox1.Items.Objects[ListBox1.ItemIndex]);
    Showmessage(pData^);
  End;    end;    
_______________________________________ 深藍的魚,祝您好運..........連連
chris_shieh
高階會員


發表:46
回覆:308
積分:240
註冊:2004-04-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-20 00:05:44 IP:218.167.xxx.xxx 未訂閱
感謝Chance36大大 經您這麼一提 才想起來有這麼個property 受教了! @瞭解越多.懂得越少@
系統時間:2024-06-02 16:43:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!