Archive for the ‘Delphi’ Category

Load Gambar Menggunakan Delphi

October 8, 2008

Dapet lagi dari forum delphi-id[dot]org, kebetulan yang posting adalah master delphi sekaligus moderator yang handal di forum. Mumpung masih hangat dan belum hilang dari daftar aku langsung salin deh, berikut salinannya:

Kitik-kitik berikut mungkin dapat dipertimbangkan Smile

  1. function LoadJPEGImage(const Source: TField; const Dest: TPicture): Boolean;
  2. var Temp: TStream;
  3. Img: TJPEGImage;
  4. begin
  5. Result:= (Source is TBlobField) and (Source.Size > 0); // is greather than zero?
  6. if Result then
  7. begin
  8. Temp:= TMemoryStream.Create;
  9. try
  10. TBlobField(Source).SaveToStream(Temp);
  11. Temp.Seek(0, soFromBeginning);
  12. Dest.Graphic:= nil;
  13. Img:= TJPEGImage.Create;
  14. try
  15. Img.LoadFromStream(Temp);
  16. Dest.Graphic:= Img;
  17. except
  18. if not Assigned(Dest.Graphic) then
  19. FreeAndNil(Img)
  20. else
  21. Dest.Graphic:= nil;
  22. Result:= False;
  23. end;
  24. finally
  25. FreeAndNil(Temp);
  26. end;
  27. end;
  28. end;

Penggunaan:

  1. begin
  2. if not LoadJPEGImage(DM.QueIklan2Level1, Image1.Picture) then
  3. raise Exception.Create('Cannot load image!');
  4. end;

Bagi yang berminat, silahkan langsung kopi….

Kode Untuk Membuka Cash Drawer Menggunakan Delphi

October 8, 2008

Aku memang belum coba sih, soalnya belum ada project yang terkait. Tapi buat persiapan boleh lah aku tulis di sini :). Kebetulan ada member di delphi-id[dot].org yang kasih tau, biar gak lupa aku salin deh. Berikut petikan postingannya:

Kalo untuk codingnya saya gunakan perintah ini,

  1. WriteLn (#27 + #112 + #0 + #25 + #250);

Kombinasi angka itu saya dapat dari manual EPSON, sedangkan yang saya punya Cash Register Sharp XE A203. Dan kombinasi tersebut belum saya buktikan benar atau tidaknya, karena saya belum bisa menghubungkan Cash Drawer dengan komputer.

Kalau coding untuk VB seperti apa? Mungkin nanti bisa saya convert ke delphi.

Bagi yang mau mencobanya silahkan…

List Of Delphi Keyboard Shortcut

October 8, 2008

Code Parameters : Ctrl-Shift-Space
Code Completion : Ctrl-Space
Code Templates : Ctrl-J

Class Completion
Class Completion : Ctrl-Shift-C
Class Nav Up Ctrl-Shift-Up
Class Nav Down Ctrl-Shift-Down

Code Browsing (D6 and above)
Symbol Browsing : Alt-Up
Browse Forward : Alt-Right
Browse Backward : Alt-Left

Message Window
Previous Message : Alt-F7
Next Message : Alt-F8

IDE Windows
Code Explorer : Ctrl-Shift-E
Project Manager : Ctrl-Alt-F11
Window List : Alt-0 (zero)
Object Inspector : F11

Debugger Windows
Event Log : Ctrl-Alt-V
Breakpoints : Ctrl-Alt-B
Watches : Ctrl-Alt-V
Threads : Ctrl-Alt-T

TODO List Window
Add TODO Item : Ctrl-Shift-T

Editing
Blocking Mode : Ctrl+O-L (line) Ctrl+O-C (column)

Debugging
Trace Into : F7
Step Over : F8
Trace to next source line : Shift-F7
Run to Cursor : F4
Run until return : Shift-F8
Program Reset : Ctrl-F2
Evaluate/Modify : Ctrl-F7
Add Watch : Ctrl-F5
Toggle Breakpoint : F5

Compiling
Compile Project : F5
Build : Ctrl-F5
Syntax Check : F5
Project Options : Ctrl-Shift-F11

Membangun Aplikasi Sistem Informasi Dengan Kecepatan Optimal

April 11, 2007

Studi Kasus: Sistem Informasi dengan Delphi 5 dan database PostgreSQL

by: Agus Widodo, S.Kom

Kecepatan yang saya maksudkan di sini adalah kecepatan aplikasi (*.exe) yang akan di-’nikmati’ oleh user/pengguna aplikasi. Bukan kecepatan seorang programmer untuk menghasilkan sebuah form seperti halnya rapid application development (RAD) yang akan dinikmati oleh programmer.

Mengapa Harus Cepat?

Kecepatan program bagi seorang programmer menunjukkan juga kecakapan memproduksi aplikasi (coding) dengan cara yang tepat. Ingat! Proses adalah sebagian dari hasil. Hasil bagus pastilah terlahir dari proses yang matang, bagus, terencana dan tepat. Bukan kebetulan terjadi. Jika cara programming kita asal-asalan, siap-siaplah menuai kritik bahkan cemooh user: “wah kok lambat ya…”, “Masa untuk proses data harus di tinggal makan siang dulu mas…” D

Itu dari sudut programmer, bagi sudut corporate/company (dengan jumlah record transaksi yang besar), maka program yang robust dengan kecepatan handal adalah kebutuhan. Misalkan saja sebuah kasir pitstop sebuah depo container dengan antrian panjang. Satu detik saja sangat berharga, klo bisa, begitu di tekan tombol print maka proses cetak langsung ke dua printer dan sebuah form siap input sudah siap di isi tanpa terpengaruh dengan loading data untuk print dsb.

Beberapa Tips Untuk Mendapatkan Kecepatan Optimal

Berikut beberapa catatan singkat yang sempat terekam saat membangun aplikasi.

1. Pilihlah jenis koneksi database yang tepat

Sebelum terlalu jauh digunakan, cobalah beberapa alternatif koneksi yang memungkinkan. Bandingkan dan pilih dengan kecepatan yang paling optimal. Biasanya, koneksi langsung (direct connection) ke database jauh lebih cepat daripada harus melewati lapisan lagi semacam ODBC. Dalam kasus yang saya temui, saya menemukan bahwa koneksi ke PostgreSQL sangat jauh lebih cepat dengan Zeos daripada PsqlODBC.

2. Gunakan DLL untuk membuat program lebih moduler

DLL’s tersebut bisa kita gunakan menimpan prosedur2 yang sering di gunakan. Ini akan membuat file exe jadi lebih kecil ukurannya. DLL bisa dipanggil hanya ketika di perlukan.

3. Open dataset pada saat yang tepat dan memang di butuhkan

Jangan pasang semua dataset pada sebuah form dan di open semua saat form onShow. Open untuk dataset yang dibutuhkan . Jika ada dataset yang mungkin tidak mesti digunakan, open saat akan dibutuhkan saja. Misal dengan :

With Table1 do
if not Active then Open;

4. Gunakan query base daripada table base untuk form transaksi yang memerlukan banyak dataset

Query bisa kita atur untuk mengambil sebagian data saja, meskipun bisa juga dengan mennggunakan TTable dan di filter. Tapi itu akan jauh lebih lambat.

Akan lebih cepat Anda melakukan query dengan :

Insert into customer (nik,...) values ('0001' ... ...)

daripada:

Table1.Append;
Table.FieldByName(’nik’).AsString := ‘0001′;

Dengan query maka client tidak perlu meminta seluruh data (seperti pada table). Performance program akan terjaga. Jika menggunakan cara kedua (TTable), setiap bertambah record itu sama artinya menurunkan performance, semakin lama semakin lambat.

5. Load data sesuai yang diinginkan

Jika form hanyalah untuk input, maka gunakan komponen non DataAware, maksudnya komponen yang tidak berhubungan langsung dengan koneksi database missal TEdit (TDBEdit). Jadi begitu input langsung masukkan pada property SQL.Text := 'insert into ... bla... bla...'

Pilihlah Memory Table daripada TQuery yang dipasangkan dengan TUpdateSQL untuk menqoperasikan sebagian hasil query untuk di edit. Jangan pake Table yang di filter! Ini sama artinya meminta aplikasi load all data kemudian di pilihi.

7. Bijaksanalah menggunakan CalculatedField

Pilihlah query yang cukup kompleks untuk ambil dari beberapa table daripada Anda open satu dataset kemudian menggunakan event onCalculated, yang akan mengisikan field Calculated. Karena onCalculated akan terus di eksekusi sebanyak record yang harus di load. Jika query maka server hanya sekali menerima perintah, di proses dan kirim lagi. Ini juga akan mengurangi beban jaringan daripada cara CalculatedField.

Output Program

1. Cetak Ke Layar

  • Jika dataset sudah tersedia maka jangan pilih report dengan koneksi langsung ke database seperti crytal report tapi pilih reporting tool yang bisa ambil data dari dataset yang sudah terisi pada form.
  • Jika dataset tidak tersedia (biasanya kita masukkan dalam menu laporan input parameter laporan), baru menggunakan report yang akan mengquery data
  • Jika ingin mengeluarkan output ke office document seperti excel, jangan gunakan OleContainer tapi gunakan excel report tool (banyak VCL yang free). OleContainer akan meminta program handle dokumen yang dihasilkan. Ini salah satu (diagnosa saya) yang menyebabkan kadang terasa sangat lambat untuk pasing data. Lain dengan Excel Report yang hanya open excel dan create dokumen, lempar data.
  • Jika ada penghitungan, sorting, dan gruping, pilihlah option untuk hitung di server, tentunya saya memakai asumsi bahwa computer server memang di sediakan untuk operasi data dengan cepat dan handal.
  • Untuk laporan yang menggunakan image (misal foto) yang tersimpan. Batasi ukuran file saat penyimpanan saja. Sehingga saat laporan tidak memberatkan.

2. Pencetakan

  • Pilih print langsung ke printer jika memang tidak memerluka print via jaringan.
  • Gunakan Thread untuk open koneksi dataset untuk dataset yang aman. Thread memungkinan membuka dataset secara bersamaan dalam satu waktu. Jadi tidak sekuensial. Akan tetapi, ini akan menjadi ‘petaka’ manakala kita tidak hati2 dengan mengecek status opennya saat akan menggunakan. karena meski dataset belum open, form sudah bisa di lihat user.

Browse Data dan UI

1. Minimalisasi penggunaan mouse

  • Gunakan shortcut
  • Pemakaian tombol2 yang tepat. Jangan meminta user untuk menekan/klik tombol jika memang transaksi bisa dilakukan tanpa melakukannya. Contoh tombol Add/Edit
  • Minimalisasi browse data dengan jumlah besar. Lebih cepat validasi data setelah user input. Browse data hanya digunakan untuk pencarian jika user memang tidak memegang data transaksi secara jelas(masih perlu proses pencarian).
  • Jika memerlukan browse data, usahakan untuk meminimalisi query dengan minta bantuan user menginput sebagian data. (gunakan ‘ilike’)

2. Efisiensi coding

  • Efisiensikan pemakaian variable pada coding, karena semakin tidak efisien semakin memeberatkan memory. Juga perhatikan coding kita, jangan terburu2 membuat looping yang memerlukan variable jika sebenarnya tidak perlu.
  • Jangan terlalu banyak memakai komponen yang bermacam-macam dari VCL yang berbeda-beda. Ingat semakin banyak unit (kita deklarasikan dengan frasa Uses) akan semakin membuat ukuran file kita besar dan aka mengurangi performance. Misal, klo sudah pakai Developer Express, maka untuk grid, editor2 nya usahakan sama saja. Kecuali memang ada tujuan betul2 khusus. Jika Anda mengganti komponen (menghapusnya dan menggantikan dengan lainnya), usahakan untuk cek di Uses jangan sampai unit2nya masih tertempel terus pada form Anda.
  • Jika Anda menggunakan Skin (seperti SuiSki / Dynamic Skin Form) untuk mempercantik tampilan, sertakan file skin dengan exe. Lebih baik tidak di buat built in. ini menghindari ukuran aplikasi yang membengkak. Jangan lupa untuk men-skin form hanya untuk form itu saja.

Jika ada catatan saya yang salah, sudilah kiranya saya diberi pencerahan ke email langsung. Terima kasih sebelumnya.

Agus Widodo, S.Kom

EDP / System Dept.
PT Indra Jaya Swastika
www.ijs.co.id – One Stop Container Depot
(system_at_ijs.co.id / guswid_at_telkom.net)

Cara Install Quick Report versi 4.0 di Delphi 7

March 14, 2007

Sebelum meng-install pastikan Quick Report versi sebelumnya sudah hilang dari delphi. Caranya, pilih menu Components-Install Packages, pilih item yang berhubungan dengan quick report (ada dua item, Quick Report Components dan TreeChart for Quick Report) lalu tekan tombol Remove.

Jangan lupa untuk menghapus file quickreprot *.bpl yang ada di windows/system(32), termasuk yang ada di folder Program Files/Borland/Delphi7/Projects/bpl.

Install file setup-nya, otomatis di folder Program Files/Borland/Delphi7 akan muncul folder dengan nama quickrpt, jalankan file package yang ada di folder tersebut.