Welcome To BlogYus. Hope my ordinary texts could gives you many informations. Enjoy my blog. And don't forget to leave a comment or just say hello to me :D

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….. :D

terima kasih buat rekan2 di Delphi Indonesia.

Technorati Tags: , ,

Powered by ScribeFire.

Related posts:

  1. Installing SMDBGrid Component @ Delphi 7

14 Responses so far.

  1. rama says:

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

    Reply

  2. Riyogarta says:

    Wah ternyata delphier juga, sama dengan saya :) Salam kenal.

    Reply

  3. zeromask says:

    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?

    Reply

  4. ningnong says:

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

    trims tipstriknya…

    Reply

  5. yusdi says:

    @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

    Reply

  6. mZ.anGgIe says:

    ngeri aja skripnya…

    cie yang lagi TA…
    ayo buruan lulus bah… :P

    Reply

  7. cookie says:

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

    Reply

  8. Rosyidi says:

    wah tingkat tinggi nih. Gak paham :(

    Reply

  9. ridu says:

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

    Reply

  10. Bocah Cilik says:

    Wah masih ada toh penggemar Delphi ? Asyik dapet teman…

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

    Reply

  11. abner says:

    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????

    Reply

  12. gek mirah says:

    artikelnya bisa saya manfaatkan. terimakasih :)

    Reply

  13. Cecep says:

    kalo untuk rumus bersih di checkbox kaya mana rumusnya ?

    Reply


(yahoo) (dance) (idiot) (doh) (lmao) :pinguin: :hug: :tepuktangan: :-?? =)) :party: :tanya: :kaget: [-( :( :D I-) :doa: :mikir: :) :devil: ;) :arrgh: :-L :)) :marah: ;)) ^:)^ :p :cihuy: :(( O:-) :siul: :-w :-bd X_X :malu: :alis: :mual: :piss: more »

Battlefield 3

Permainan First-Person Shooter (FPS) besutan EA Games ini sungguh sangat ...

Pertama Kali Masuk G

Hmm to the point banget ya judulnya :)) Iya memang saya ...

Selamat Mayor

Bangganya punya kakak yang satu ini :party: :party: :party:  . Dapet ...

Surprised Day

Hmmm sebenernya udah lewat beberapa hari siyyy....soalnya nunggu videonya dulu ...

Jalan-Jalan Keliling

Istilah "Buku Jendela Dunia" sekarang menurut aku udah ga berlaku ...

Battlefield 3

Permainan First-Person Shooter (FPS) besutan EA Games ini sungguh sangat ...

Pertama Kali Masuk G

Hmm to the point banget ya judulnya :)) Iya memang saya ...

Selamat Mayor

Bangganya punya kakak yang satu ini :party: :party: :party:  . Dapet ...

Surprised Day

Hmmm sebenernya udah lewat beberapa hari siyyy....soalnya nunggu videonya dulu ...

Jalan-Jalan Keliling

Istilah "Buku Jendela Dunia" sekarang menurut aku udah ga berlaku ...