Menyimpan Status CheckBox pada Delphi
Posted by yusdi on 16 April, 2008
//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: delphi, checkbox, array
Powered by ScribeFire.








rama said
aduh… pascal … delphi… udah lama gk belajar gituan! jadi sekarang pusing2 deh..
Riyogarta said
Wah ternyata delphier juga, sama dengan saya
Salam kenal.
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?
ningnong said
hueheheheeh….
cihuy…. hidup abah…!!!
klo aku sie, masih kepikiran cara kuno abah
trims tipstriknya…
yusdi said
@rama,
yg penting belajar,,inipun karena TA ku….heheheheh
@Riyogarta,
). salam kenal juga om, kapan2 saya diajarin delphi ya
waduh blogger Indonesia mampir kesini juga,,(belum nyiapin jamuan neh, rumahku masih berantakan
@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
mZ.anGgIe said
ngeri aja skripnya…
cie yang lagi TA…
ayo buruan lulus bah…
cookie said
ehem..ehem…tes..tes.. aku ndak ngerti…
hohohho…
mbok di post juga di sini. biar asik…
Rosyidi said
wah tingkat tinggi nih. Gak paham
ridu said
OMG.. Delphi yah?? duuh.. gw aja belajar php aja belibet banget.. anak ekonomi kalo dijejelin kek gini pusing.. mendingan ngitung duit deh..
Bocah Cilik said
Wah masih ada toh penggemar Delphi ? Asyik dapet teman…
Tapi saya juga penggemar lainnya juga, php, vb, java, foxpro, dsb.