### yuSd! ###

The Way Of Life Exploration

Menyimpan Status CheckBox pada Delphi

Posted by yusdi on 16 April, 2008

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.

11 Responses to “Menyimpan Status CheckBox pada Delphi”

  1. rama said

    aduh… pascal … delphi… udah lama gk belajar gituan! jadi sekarang pusing2 deh..

  2. Riyogarta said

    Wah ternyata delphier juga, sama dengan saya🙂 Salam kenal.

  3. zeromask said

    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?

  4. ningnong said

    hueheheheeh….
    cihuy…. hidup abah…!!!
    klo aku sie, masih kepikiran cara kuno abah

    trims tipstriknya…

  5. yusdi said

    @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

  6. mZ.anGgIe said

    ngeri aja skripnya…

    cie yang lagi TA…
    ayo buruan lulus bah…😛

  7. cookie said

    ehem..ehem…tes..tes.. aku ndak ngerti…
    hohohho…
    mbok di post juga di sini. biar asik…

  8. Rosyidi said

    wah tingkat tinggi nih. Gak paham😦

  9. ridu said

    OMG.. Delphi yah?? duuh.. gw aja belajar php aja belibet banget.. anak ekonomi kalo dijejelin kek gini pusing.. mendingan ngitung duit deh..😛

  10. Wah masih ada toh penggemar Delphi ? Asyik dapet teman…

    Tapi saya juga penggemar lainnya juga, php, vb, java, foxpro, dsb.

  11. dayat said

    makasih om skripnya.

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 )

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s

 
%d bloggers like this: