ListView'de listeme yaparken her satırda görünenlerin dışında veri(Object) saklamak için bir yöntem:
Örneğin; listview'de kişi bilgilerini gösteriyoruz; Ad ve soyad.
Fakat kişinin ayrıca Telefon ve Doğum Tarihi bilgileri de var. Bunları da her listview satırı içinde saklamalı ve gerektiğinde kullanmalıyım.
Bunun için TListItem'dan bir sınıf türetip gerekli bilgilerimizi tanıtmalıyız:
Daha sonra Listview'ın OnCreateItemClass olayında yukarıdaki sınıfımızı tanıtmamız gerekiyor:
Artık Listview'a ekleme yaparken ve okurken TKisi sınıfını kullanabilirim:
Sakladığımız verileri okumak:
Örneğin listview'e çift tıklandığında:
Bu kullanım şeklinin en büyük artısı: Sakladığım TKisi sınıfı verilerini Free etmekle uğraşmıyorum
Örneğin; listview'de kişi bilgilerini gösteriyoruz; Ad ve soyad.
Fakat kişinin ayrıca Telefon ve Doğum Tarihi bilgileri de var. Bunları da her listview satırı içinde saklamalı ve gerektiğinde kullanmalıyım.
Bunun için TListItem'dan bir sınıf türetip gerekli bilgilerimizi tanıtmalıyız:
TKisi = class(TListItem) private FAd: string; FSoyad: string; FTarih: TDateTime; FTelefon: string; public property Ad: string read FAd write FAd; property Soyad: string read FSoyad write FSoyad; property Tarih: TDateTime read FTarih write FTarih; property Telefon: string read FTelefon write FTelefon; end;
Daha sonra Listview'ın OnCreateItemClass olayında yukarıdaki sınıfımızı tanıtmamız gerekiyor:
procedure TForm1.ListView1CreateItemClass(Sender: TCustomListView; var ItemClass: TListItemClass); begin ItemClass := TKisi; end;
Artık Listview'a ekleme yaparken ve okurken TKisi sınıfını kullanabilirim:
var kisi: TKisi; begin kisi := TKisi(ListView1.Items.Add); kisi.Ad := 'adım'; kisi.Soyad := 'soyadım'; kisi.Telefon := '0123456789'; kisi.Tarih := Now; kisi.Caption := kisi.Ad + ' ' + kisi.Soyad; // Caption'a ekranda görünmesini istediğim bilgileri yazıyorum
Sakladığımız verileri okumak:
Örneğin listview'e çift tıklandığında:
procedure TForm1.ListView1DblClick(Sender: TObject); begin ShowMessage(TKisi(ListView1.Selected).Telefon); end;
Bu kullanım şeklinin en büyük artısı: Sakladığım TKisi sınıfı verilerini Free etmekle uğraşmıyorum
There's no place like 127.0.0.1