Demek istediğini anlamadım ama orada her türlü kullanıma örnek var. Uygulamada sıkıntı çektin herhalde. Şimdi TStrings ve türevi nesnelerinin (ComboBox ve ListBox gibi bileşenlerin Items özelliği bu tiptedir) özelliği bir dizi string bilgi tutmasıdır. Bu dizi içerisinde her string değere karşılık gelen birde TObject tipinde değer tutulmaktadır. TObject ile Integer nesneleri hafızada aynı boyutta yer kaplarlar. Bu yüzden iki tip arasında dönüşüm yaparak biz integer değer de tutabiliriz.
Örn:
Kod: Tümünü seç
var ObjTip:TObject; IntTip:Integer;
begin
.
.
ObjTip:=TObject(IntTip);
IntTip:=Integer(ObjTip)
gibi. Bu örneğe göre listedeki her string değere paralel olarak integer bir değer tutarak tüm işlemleri uygulayabiliriz.
Mesela diyelimki bir tabloda Öğrenciler ve numaraları olsun. Öğrenci isimlerini listede gösterelim numaralarını ise arka plandan takip edelim ve kullanalım. Başlangıç olarak listeyi tablodan dolduralım.
Kod: Tümünü seç
tblOgr.First; cbListe.Items.Clear;//<-Combobox
while nor tblOgr.Eof do begin
cbListe.Items.AddObject(tblOgrAdSoyad.AsString, TObject(tblOgrNo.AsInteger));
tblOgr.Next;
end;
bu kodla listede sadece öğrenci isimleri görünecektir. Numaraları ise Objects listesinde tutmaktayız. Ekranda tıklanan bir öğrencinin numarasını ekranda gösterelim:
Kod: Tümünü seç
if cbListe.ItemIndex<0 then lblNo.Caption:=''
else lblNo.Caption:=IntToStr(Integer(cbListe.Items.Objects[cbListe.ItemIndex]));
Bir öğrencinin numarasını değiştirelim
Kod: Tümünü seç
cbListe.Items.Objects[cbListe.ItemIndex]:=TObjects(SpinEdit1.Value);
Bir öğrenciyi isminden arayıp numarasını bulalım
Kod: Tümünü seç
i:=cbListe.Items.IndexOf(Edit1.Text);
if i<0 then lblNo.Caption:=''
else lblNo:=IntToStr(Integer(cbListe.Items.Objects[i]))
Bir numaradan öğrencinin adını bulalım
Kod: Tümünü seç
i:=cbListe.Items.IndexOfObjects(TObject(SpinEdit1.Text));
if i<0 then lblAd:=''
else lblAd:=cbListe.Items[i];
Görüldüğü üzere her string değere paralel bir integer değer takip işlemi yapılabilmektedir. Soruyu ilk okuduğum anda aklıma kendim için oluşturduğum bu çözümü sunmak geldi. Alakasız gibi görünen ama olayın kilit noktası olan
TObject ve
Integer tip dönüşümünde uyumlu olduğundan böyle bir soru sordum. Bu tekniği kullanarak fazladan değişken ve fonksiyon gibi kod yazma külfetinden kurtulmuş ve hazır VCL kodlarını kullanmış oluyorum.