Friday, April 21, 2006

CreasindoID Rebuild - Part 2

Early Friday, April 21st 2006, 03:00 AM 

-Bahasa Indonesia Mode (cause i fell so so sleepy ... emoticon)-

Setelah proses coding yg lumayan ribet (+- 12 jam), akhirnya prosedur printing ulang KTP CreasindoID 90% rampung emoticon. Sebelumnya sistem printing yg gw pake bergantung dengan properti printform. Masalah utama yg muncul waktu itu adalah ketergantungan properti printform pada resolusi layar/form. Jadi kalo resolusinya kecil, jumlah KTP yg bisa dicetak jg sedikit. Misalnya, resolusi monitor gw sekitar 1152x864 px, maka jumlah KTP yg bisa dicetak cuman sekitar 6 lembar.
Biarpun gw paksain properti width atau height ke nilai berapapun, tetap aja jumlah maksimal KTP yg tercetak cuman 6 lembar. Kalo gw pasang 8 lembar, pasti kepotong KTP-nya emoticon.

Setelah mikir2, akhirnya gw putusin buat memakai sistem printing manual (pake metode print tab/spc). walaupun akhirnya beres, bukan berarti nggak ada masalah dalam proses scriptingnya (gw sempat stress mikirinnya). Masalah2 yg muncul dalam sistem printing manual antara lain :

  1. Ribet. Kelebihan properti printform ada di kemudahan dalam mengatur layout dr KTP yg dicetak, soalnya programmer tinggal menggeser objek yg mau dicetak ke posisi yg diinginkan secara visual dengan mouse. Sedangkan untuk metode print tab/spc, programmer harus pake ilmu 'kira-kira' untuk menentukan posisi dr objek yg mau dicetak. Untungnya driver printer yg gw pake memungkinkan user untuk melihat tampilan sebelum cetak (print preview) walaupun gw make VB buat mencetak.
  2. Image printing. Ini jg sempat jd masalah. Tadinya gw bingung gimana caranya mencetak gambar secara manual. Pake metode print kagak bisa. Setelah ngulik2 MSDN, akhirnya jawabannya ada di metode paintpicture. Metode ini memungkinkan printer buat mencetak gambar dengan posisi dan ukuran yg diinginkan programmer. Tadinya gw pikir objek yg bisa dicetak cuman sebatas picturebox, ternyata objek image jg bisa emoticon.
  3. Huruf. Kalo pake printform mah gampang banget, tinggal pake objek label, terus atur fontnya/alignnya. Kalo pake print tab/spc ? Jangan harap segampang itu. Masalahnya, nggak ada hubungan antara jumlah huruf dgn lebar kolom (tab) untuk tiap huruf. Misalnya gini, kata "WARE" terdiri dr 4 huruf, idealnya sih ruang yg dipake buat kata ini cuman 4 kolom. Kenyataannya, huruf W memakai 2 kolom (karakternya lebar soalnya), jadi jumlah kolom yg dipake kata "WARE" ini ada 5. Kalo udah gini, ngatur align buat tiap karakter yg mau dicetak jg nggak bakalan gampang, dan dijamin nggak bakalan rata. Satu2 solusi adalah dgn memakai fixed-pitch font (huruf dgn lebar kolom tetap per karakter). Setelah googling, akhirnya gw dapat huruf yg bagus, namanya Bitstream Vera Sans Mono emoticon (nama yg aneh kan .. emoticon)
  4. Algoritma. This is the main problem. Gw putuskan buat tetap make sistem array. Soalnya, selain lebih hemat memori, gw jg nggak pusing bikin algoritma pencetakannya. Karena ada delapan KTP sekali cetak, maka indeks yg dipake dr 0-7. Supaya lebih efisien, gw pake looping sebanyak 4 kali. Jadi untuk tiap looping ada 2 KTP yg dicetak. Proses looping jg harus disesuaikan dgn indeks dr array. Misal, Variabel looping = i, starting point=1 (for i = 1 to 7). Supaya stabil, untuk tiap loop, data KTP yg dicetak adalah data dengan indeks (i-1) dan (i+3).  Jadi untuk loop pertama, indeks data yg dicetak adalah 0 (1-1) dan 4 (1+3). Loop Kedua, indeks 1 (2-1) dan 5 (2+3). Dst sampai loop keempat, indeks 3 (4-1) dan 7 (4+3).
  5. Yah, kayaknya untuk printing KTP cukup itu dulu, gw mau tidur dulu. Ngantuk berat bo. Pekerjaan selanjutnya besok adalah menghubungkan variabel printing dengan data array yg sebenarnya dr CreasindoID. InsyaAllah, untuk printing, besok udah rampung semua emoticon.

No comments:

Post a Comment