Menyimpan Status CheckBox pada Delphi

Disalah satu bagian pada program Tugas Akhirku, terdapat 18 checkbox yg merupakan informasi dari kelengkapan data naskah (lihat postingan saya tentang Tugas Akhir). Saya berfikir bagaimana caranya menginisiasi ke 18 checkbox itu dan menyimpannya ke dalam database, begitu juga sebaliknya membaca database kemudian merepresentasikan ke dalam checkbox apakah checked=true atau false. Cara kuno yg saya dapatnya adalah cara manual dengan banyak coding dan memakan banyak field di database (harus menyediakan 18 field dalam 1 tabel)

//untuk menulis ke database atau write
if checkbox1.checked=true then table1.fieldvalues[‘isi1′]:=’1’ else
table1.fieldvalues[‘isi1′]:=’0’;

….
if checkbox18.checked=true then table1.fieldvalues[‘isi18′]:=’1’ else table1.fieldvalues[‘isi18′]:=’0’;

//=============================================================================

//untuk membaca database atau read
if table1.fieldbyname(‘isi1′).asstring=’1’ then checkbox1.checked := true else checkbox1.checked:=false;
…..
if table1.fieldbyname(‘isi18′).asstring=’1’ then checkbox18.checked := true else checkbox18.checked:=false;

Script diatas sangatlah tidak efisien, membutuhkan banyak waktu,tempat dan ruang. Saya bertanya sana sini, mencari sana sini bagaimana caranya hal tersebut dapat disimpan dalam database namun dengan sedikit coding dan sedikit memakan space database. Akhirnya saya mencoba men-dinamiskan ke 18 checkbox tadi, dan menjadikan semuanya dalam 1 field saja. Setelah itu diinisiasi menggunakan angka biner. Jadi untuk setiap checkbox kita tidak perlu menyediakan 18 field dalam tabel, namun cukup 1 field yg isinya merupakan angka biner yg merepresentasikan status checkbox tadi.

untuk simulasinya silahkan ikuti langkah berikut :

1. buka delphi anda dan buat aplikasi baru
2. siapkan 2 buat edit (ganti namanya menjadi Ed_masuk dan Ed_keluar), 2 button (ganti captionnya menjadi Input dan Output), dan 18 checkbox (TCheckbox, nama biarkan default)
3. simulasi pertama yaitu kita membuat inisiasi atas ke 18 checkbox menjadi 18 urutan angka biner. kemudian menyimpannya kedalam Ed_keluar (Tedit ini seolah2 adalah field dari database). Masukkan beberapa perintah berikut didalam event – Onclick Button2 (output)

procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
kode : array [1..18] of string;
checkbox : array [1..18] of TCheckBox;
begin
ed_keluar.Clear;
i:=1;
for i:=1 to high(checkbox) do
begin
if TCheckbox(FindComponent(‘Checkbox’+IntToStr(i))).Checked = true then kode[i]:=’1’
else kode[i]:=’0′;
ed_keluar.Text := ed_keluar.Text+kode[i];
end;
end;

Untuk mencobanya, silahkan centang beberapa checkbox kemudian klik tombol Output. Maka pada ed_keluar akan terlihat urutan 18 angka biner. angka 0/1 merepresentasikan status checkbox anda, apakah dicentang atau tidak. Urutan angka biner sesuai dengan urutan Checkbox anda.

4. Simulasi kedua adalah menerima urutan 18 angka biner (seharusnya dari database) dari Ed_masuk kemudian membaca per karakter dan merepresentasikan status Checkbox tadi. Buat event-Onclick pada button1 (Input) kemudian lengkapi prosedurnya dengan perintah berikut

procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer; kode : array [1..18] of string;
begin
i:=1;
j:=1;
for i:=1 to length(ed_masuk.Text) do
begin
kode[i] := copy(ed_masuk.Text,i,j);
if kode[i]=’1′ then TCheckbox(FindComponent(‘Checkbox’+IntToStr(i))).Checked := true
else TCheckbox(FindComponent(‘Checkbox’+IntToStr(i))).Checked := false;
end;
end;

Untuk mencobanya silahkan masukkan 18 angka biner (0/1) kedalam ed_masuk kemudian klik tombol Input. Maka checkbox yg tercentang berasal dari angka ‘1’ dari urutan yg anda masukkan sebelumnya.

Alhamdulillah script jadi lebih sedikit dan cuma butuh 1 field dalam tabel…so simple….. πŸ˜€

terima kasih buat rekan2 di Delphi Indonesia.

Technorati Tags: , ,

Powered by ScribeFire.

Advertisements

19 thoughts on “Menyimpan Status CheckBox pada Delphi

  1. Delphi wes lali..dulu gag bisa sekarang Lupa hehe

    if kode[i]=’1β€² then TCheckbox(FindComponent(’Checkbox’+IntToStr(i))).Checked := true
    else TCheckbox(FindComponent(’Checkbox’+IntToStr(i))).Checked := false;
    artinya gimana Tuh mas Yusdi?
    jadi pas array nilai 1 dia mencopy fields baru masuk ke database kah?

  2. @rama,
    yg penting belajar,,inipun karena TA ku….heheheheh

    @Riyogarta,
    waduh blogger Indonesia mampir kesini juga,,(belum nyiapin jamuan neh, rumahku masih berantakan :D). salam kenal juga om, kapan2 saya diajarin delphi ya

    @zeromask,
    bukan mas.kl yg itu ceritanya proses pembacaan dari database untuk diterjemahin ke checkboxnya, apakah checked=true(1) atau checked=false(0). urutan biner dibaca perkarakter sesuai urutan arraynya, kemudian dicek dan diterjemahin sesuai urutan nama checkboxnya.

    @ningnong,
    samisami..siap2 progress yooo….sukses

  3. OMG.. Delphi yah?? duuh.. gw aja belajar php aja belibet banget.. anak ekonomi kalo dijejelin kek gini pusing.. mendingan ngitung duit deh.. πŸ˜›

  4. wow lam kenal dulu bro….. aku juga baru blajar delphi…. buat program yang memangil jatuh tempo ke menu utama dalam sebuah memo,,, menggunakan database desktop,,, Gimana tuh bro????

  5. agan agan semuanye……, minta tolong… sy mau nanya neh.., gimana cara nampilan data dari database ke checkbox,… kan aq buat transaksi pembayaran spp, nah…,ketika checkbox spp aq pilih.., maka checkbox yang berisi bulan-bulan yang sudah dibayar akan secara otomatis tercentang…, alias dicek di databasenya..
    mohon bantuannya…, jelasin disini boleh,, di email juga bisa
    tari_arsip@yahoo.co.id

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s