Merhaba.
Genel örnekleme yapayım. Her item için çoklu veriyi farklı şekillerde tutabilirsiniz.
- Dilerseniz Normal DATA,
- Dilerseniz RTTI,
- Dilerseniz JSON olarak saklar
.. ve sakladığınız şekilde okursunuz.
Bunlara örnek aşağıdaki şekildedir.
Not: Örnekler denenmiştir.
Normal DATA kullanımı :
Veri doldurma işlemi
procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
aItem : TListViewItem;
begin
for i := 0 to 9 do
begin
aItem := Listte.Items.Add;
aItem.Text := Format('Text_%.2d', [i]);
aItem.Detail := Format('Detail_%.2d', [i]);
aItem.Data['1'] := 'adi:Muharrem';
aItem.Data['2'] := 'soyadi:ARMAN';
aItem.Data['3'] := 'dogumyeri:Ankara';
aItem.Data['4'] := 'forum:www.delphican.com';
end;
end;
Seçili ITEM için Veri listeleme
procedure TForm1.Button2Click(Sender: TObject);
var
i : Integer;
AItem : TListViewItem;
begin
if Listte.Selected = nil then Exit; // Seçili değilse çık
AItem := TListViewItem( Listte.Selected );
for i := 1 to 4 do begin
ShowMessage( AItem.Data[ IntToStr(i) ].AsString );
end;
end;
Şimdi de RTTI hali için örnek :
ortak TYPE tanımı
Type tVeri = Record
adi,
soyadi,
dogumyeri,
forum : String;
end;
Veri doldurma işlemi
procedure TForm1.Button3Click(Sender: TObject);
var
i : Integer;
aItem : TListViewItem;
icerik : tVeri;
begin
for i := 0 to 9 do
begin
icerik.adi := 'Muharrem - Item Idx:' + IntToStr(i);
icerik.soyadi := 'ARMAN - Item Idx:' + IntToStr(i);
icerik.dogumyeri := 'Ankara - Item Idx:' + IntToStr(i);
icerik.forum := 'www.delphican.com - Item Idx:' + IntToStr(i);
aItem := Listte.Items.Add;
aItem.Text := Format('Text_%.2d', [i]);
aItem.Detail := Format('Detail_%.2d', [i]);
aItem.Data['veri'] := RTTI.TValue.From( icerik );
end;
end;
Seçili ITEM için Veri listeleme
procedure TForm1.Button4Click(Sender: TObject);
var
i : Integer;
AItem : TListViewItem;
icerik : tVeri;
begin
if Listte.Selected = nil then Exit; // Seçili değilse çık
AItem := TListViewItem( Listte.Selected );
icerik := AItem.Data['veri'].AsType<tVeri>;
ShowMessage( icerik.adi );
ShowMessage( icerik.soyadi );
ShowMessage( icerik.dogumyeri );
ShowMessage( icerik.forum );
end;