TListBox 一問 |
尚未結案
|
SuperLowB
初階會員 發表:96 回覆:77 積分:34 註冊:2003-06-11 發送簡訊給我 |
|
chris_shieh
高階會員 發表:46 回覆:308 積分:240 註冊:2004-04-26 發送簡訊給我 |
如果一定限制要跟著元件本身
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 發送簡訊給我 |
引言: 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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |