Programming Learning

Free IT e-learning

[Delphi-Tips] TObject dalam TStrings

Lama gak nulis tutorial, agak kaku juga neh😀 , kali ini saya akan membahas bagaimana menyimpan TObject pada sebuah variable bertipe TStrings. sebelum membahas lebih lanjut kita definisikan dulu TObject tuh apa sih??? TObject adalah seperti dikutip dari http://www.delphibasics.co.uk/RTL.asp?Name=TObject

The TObject type defines the base class type. It is the oldest grandparent of all classes – every class is ultimately derived from TObject.

yang artinya kira2 begini, TObject merupakan suatu definisi tipe dimana merupakan dasar daripada tipe suatu class, merupakan suatu jenis awal semua class. semua class itu berasal dari TObject. nah cukuplah pembahasan tentang TObject, sekarang saanya bermain2 sesuai dengan judulnya.🙂

Dalam contoh kali ini saya akan menggunakan komponen TComboBox, seringkali kita menambahkan items cukup dengan contoh berikut ini :


ComboBox1.Items.Add("testing");

nah, apabila hanya menambahkan item seperti di atas, maka kita hanya memiliki 1 value yaitu “testing” setiap kali kita memilihnya, bagaimana kita menyimpan beberapa nilai seperti yang dimiliki ComboBox pada html??? misalkan ada kasus sebagai berikut :

ID | Nama

1 | Testing

2 | Lagi2 Testing

nah kita ingin menampilkan data dimana apabila dipilih maka kita sebenernya hanya membutuhkan value ID tetapi untuk tampilan aplikasi sangatlah tidak sesuai apabila kita hanya menampilkan ID saja, karena user pasti akan bingung. sebenarnya itu bisa kita akali sebagai berikut :


ComboBox1.Items.Add("1=>Testing");

lalu dalam menyeleksinya kita parsing value yang terpilih, jadi kita hanya mengambil value “1” saja, tetapi lagi2 berhubungan dengan user interface, cara seperti ini malah akan membuat berantakan tampilan aplikasi. hal ini dapat kita selesaikan dengan menambahkan masing2 TObject ke dalam item tersebut. kita gunakan cara :


ComboBox1.Items.AddObject(Const S: string ; AObject: TObject);

nah, untuk kasus ini saya akan memberikan data sebagai berikut :

nah tetapi dalam item yang ditampilkan, hanya menampilkan data pada kolom nama saja, ketika item terpilih kita dapat menarik  detail datanya. OK, caranya adalah sebagai berikut. pertama-tama kita membuat suatu class terlebih dahulu, bagi yang belum memahami cara pembuatan class silahkan kunjungi halaman https://programminglearning.wordpress.com/2009/05/02/bermain-main-dengan-class/


TPLContoh = class
 private
FID,FNama,FAlamat: string;
 public
constructor Create(Const AID,ANama,AAlamat: string);
 end;

//...

implementation

constructor TPLContoh.Create(const AID, ANama, AAlamat: string);
begin
FID    := AID;
FNama  := ANama;
FAlamat:= AAlamat;
end;

dari kode di atas kita telah membuat suatu class dimana memiliki 3 atribut yaitu FID,FNama dan FAlamat. dan kita membuat suatu modifikasi constructor dimana berparameter 3 variable yang masing2 akan mengisikan value pada ketiga atribut class tersebut.

nah kemudian kita buat suatu rancangan form sebagai berikut :

lalu kita tempelkan kode di form pada bagian event onCreate sebagai berikut :


procedure TForm1.FormCreate(Sender: TObject);
CONST
 ArrContohData : array[0..3,0..2] of string = (
('1','Tigor Mangatur Manurung','Warung Bata, Yogyakarya'),
('2','Shinta Ayu Hadiyanti','Kasihan Bantul, Yogyakarta'),
('3','Roy Marulido Situmorang','Sorogenen, Yogyakarta'),
('4','Cempluk','Akakom')
);
var
i: integer;
begin
with ComboBox1 do
begin
Items.BeginUpdate;
Items.Clear;
for i:=Low(ArrContohData) to High(ArrContohData) do
begin
Items.AddObject(ArrContohData[i][1],
TPLContoh.Create(ArrContohData[i][0],ArrContohData[i][1],
ArrContohData[i][2]));
end;
Items.EndUpdate;
end;
end;

dari kode diatas dapat kita liat bahwa kita menggunakan Items.AddObject(ArrContohData[i][1],
TPLContoh.Create(ArrContohData[i][0],ArrContohData[i][1],
ArrContohData[i][2])); yang maksudnya adalah kita menambahkan suatu item pada combobox dan menempelkan suatu object ke dalam masing2 item.

kemudian untuk menampilkan data object, dapat kita lakukan dengan cara menempelkan kode di combobox pada event OnSelect seperti berikut ini :


procedure TForm1.ComboBox1Select(Sender: TObject);
var
 strID,strNama,strAlamat: string;
begin
with ComboBox1 do
begin
strID     := TPLContoh(Items.Objects[ItemIndex]).FID;
strNama   := TPLContoh(Items.Objects[ItemIndex]).FNama;
strAlamat := TPLContoh(Items.Objects[ItemIndex]).FAlamat;
end;

ShowMessage('ID          : ' + strID + #13 +
'Nama     : ' + strNama + #13 +
'Alamat   : ' + strAlamat);
end;

berikut ini adalah hasilnya :

Nah, ternyata ada yang kurang, yaitu kita perlu untuk membersihkanTObject2 yang terbentuk ketika kita akan menambahkan/mengakhiri seksi ini, yaitu dapat memanfaatkan method seperti ini :


procedure FreeObjects(Const AStrings: TStrings);
var
idx : integer;
begin
for idx := 0 to Pred(AStrings.Count) do
begin
AStrings.Objects[idx].Free;
AStrings.Objects[idx] := nil;
end;
end;

panggil method di atas sebelum membersihkan item pada ComboBox atau pada saat mengakhiri Form🙂 .

Demikian tutorial ini, semoga dapat menambah wawasan di dalam pemrograman delphi🙂

13 responses to “[Delphi-Tips] TObject dalam TStrings

  1. elva_ivana Desember 22, 2009 pukul 7:18 am

    Mantabz bener OOP nya

  2. manztiara Desember 23, 2009 pukul 1:16 am

    Mangtabz snapshot code nya neh …

    untuk snapshot code yang terakhir baris 07 dan 08:

    AStrings.Objects[idx].Free;
    AStrings.Objects[idx] := nil;

    nah bisa gak kalo tembak langsung seperti :

    FreeAndNil(AStrings.Objects[idx]);

    mungkin kalo di time-profiler lebih cepet kali ya :mgreen:

  3. syntax_error Desember 29, 2009 pukul 7:20 am

    nais impoh gan…. :es teh kampol:

  4. coder_buzz Februari 24, 2010 pukul 10:16 am

    @Tigor:
    >> Nah, ternyata ada yang kurang, yaitu kita perlu untuk >> membersihkanTObject2 yang terbentuk ketika kita akan >> menambahkan/mengakhiri seksi ini, yaitu …

    Untuk versi > Delphi 7 cukup set property Obj.OwnsObjects := True;😉

  5. alf4vian Maret 3, 2010 pukul 4:41 pm

    Sip boss…

    Kalo buat tipe selain string atw object bisa ga diperlakukan seperti list?
    Jd spt TStringList ada ga yang buat tipe int atw real, dsb…

    atau hrs bikin class sendiri?

    Sama satu lg bos mw tnya caranya gabungin Gammu dgn Delphi gmn? kok ga bisa2 ya??

    • Tigor Manurung Maret 3, 2010 pukul 5:17 pm

      buat class sendiri ae bro, beuh…ganti hluan ke delphikah????piye phpmu le…

      • Tes Maret 5, 2010 pukul 8:49 am

        Hehehe.., ga bos cuma ada sdikit gawean aja.. coz dlu pernah belajar cpp builder, jadinya migrasi ga terlalu masalah. library2 & komponen sama aja ternyata.

        Mw tnya lg bos.. maklum masih newbie, komponen2 & library delphi yg bagus & tentunya gratis apa aja bos selain JEDI?

  6. Tes Maret 5, 2010 pukul 8:53 am

    NB: terutama bwt reporting & themes (selain SUIPack)

    • Tigor Manurung Maret 5, 2010 pukul 8:57 am

      kalo JEDI tuh dah lengkap bgt tuh,pling yang lainnya cman komponen2 tertentu2 alias pisah2 aja…klo versi bayar byk ada TMS,DevExpress,de el el and buat reporting sama juga kasusnya..yang bayar biasanya yg aku pake tuh FastReport.themes…aku g prnah pake,berat2in app aja :))

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: