Social Icons

google plustwitterfacebookinstagramlinkedinrss feedcontact me

Rabu, 22 Oktober 2014

Merubah Properti Control Dalam Datawindow

Pada Tutorial Membuat Program Biodata Karyawan yang lalu, ada script code yang bertujuan untuk memodifikasi properti Protect dari beberapa Column dalam datawindow, misalnya pada Tutorial Membuat Program Biodata Karyawan Part 7, disana ada script pada Event Clicked dari Command Button cb_tambah yg seperti ini (dibagian terakhirnya):
dw_karyawan.Modify("nama_karyawan.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("jenis_kelamin.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("tempat_lahir.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("tanggal_lahir.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("status_nikah.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("pendidikan.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("alamat_lengkap.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("nomor_telepon.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("nomor_handphone.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("alamat_email.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("nama_bagian.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("nama_jabatan.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("status_kerja.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("tanggal_masuk.Protect ='1~tIf(IsRowNew(),0,1)'")
dw_karyawan.Modify("keterangan.Protect ='1~tIf(IsRowNew(),0,1)'")
Script code diatas adalah script untuk memProtect Column dalam datawindow kecuali column dibaris baru (Penambahan Data). Dengan model script diatas maka kita tentunya harus mengetikkan satu persatu dari semua column yang ingin diprotect, masalahnya adalah, bagaimana jika column yang harus diatur itu ada banyak dan datawindow yang lain juga harus dilakukan hal yang sama ? tentunya akan tidak efisien jika harus mengetikkan secara berulang-ulang, atau yang paling mudahnya mengcopy paste script diatas lalu mengganti nama datawindow dan nama masing-masing columnnya, namun hal itu juga menurut saya agak kurang efisien, maka solusi dari saya adalah dengan membuat Function dengan metode Looping untuk setiap column, sehingga script codenya bisa dirampingkan.

Analisa
Sebelum membuat Function, maka kita pasti harus melakukan analisa terlebih dahulu, hal ini perlu karena dengan analisa, maka kita akan dapat menentukan Return value dan argument-argument yang dibutuhkan, sehingga Function yang kita buat dapat dipanggil dimana saja. Dari script code diatas dapat saya simpulkan jika Function yang akan kita buat tidak memerlukan Return Value, dan argument yang dibutuhkan adalah Datawindow dan String, dimana argument Datawindow untuk mendefinisikan datawindow yang akan diakses dan String adalah Properti dan nilai dari propertinya.
Setelah analisa selesai, langsung saja kita buat Function tersebut, berikut adalah langkah-langkahnya:
Buat Function baru dengan struktur sebagai berikut:
Nama Function: f_set_column
Return Type: (None)
Access: Public
Arguments:
Pass By
Argument Type
Argument Name
Value
datawindow
adw_name
Value
string
as_property
Pada Code Painter, masukkan script berikut ini:
String ls_object, ls_control, ls_delimiter = "~t", ls_type
Integer li_pos, li_start, li_end

ls_object = adw_name.Describe("Datawindow.Objects") + "~t"
li_start = 1
li_pos = PosA(ls_object, ls_delimiter, li_start)

DO WHILE li_pos > 0
li_end = li_pos - li_start
ls_control = MidA(ls_object, li_start, li_end) 
IF Not Isnull(ls_control) THEN
ls_type = adw_name.Describe(ls_control + ".Type")
IF ls_type = "column" THEN
adw_name.Modify(ls_control + "." + as_property)
END IF
END IF
li_start = li_pos + 1
li_pos = PosA(ls_object, ls_delimiter, li_start)
LOOP

Simpan Function ini.

Untuk menggunakan Function diatas, maka kita perlu memasukkan 2 argument, yakni datawindow dan string propertinya, misalnya:

f_set_column(dw_1, "Protect ='1~tIf(IsRowNew(),0,1)'")
f_set_column(dw_1, "Protect = 1")
f_set_column(dw_1, "Protect = 0")
f_set_column(dw_1, "Visible = 1")
f_set_column(dw_1, "Visible = 0")

Demikianlah trik singkat ini, semoga bermanfaat untuk anda.
Akhir kata, semoga sukses untuk semua yang sedang dan akan anda lakukan.

Tidak ada komentar:

Posting Komentar

Silahkan berikan komentar anda.

 

Term Of Service

Untuk mengetahui tentang penggunaan blog ini, silahkan buka halaman Term Of Service atau klik TOS untuk langsung membuka halaman Term Of Service

Privacy Policy

Untuk mengetahui kebijakan privacy dalam blog ini, silahkan buka halaman Privacy Policy atau klik Disini untuk langsung membuka halaman Privacy Policy