Translate

Senin, 21 Januari 2013

Menambahkan Image/Icon Pada Komponen Buatan Sendiri pada Component Pallete Delphi

Kilas Balik

Jika kita membuat komponen sendiri, tentunya kita ingin agar komponen ada icon yang merepresentasikan fungsi dari kegunaan komponen tersebut, bukan hanya icon default delphi, sehingga selain memudahkan kita dalam mengidentifikasi komponen, juga terlihat lebih professional.

Gambar 1 Komponen Buatan dengan Icon Default


Gambar 2: Komponen Dengan Icon Customized

Awal mula saya membuat komponen, saya puyeng bagaimana bisa menambahkan icon pada komponen buatan sendiri. Tidak semua tutorial yang terdapat di Internet yang berdasarkan pengalaman penulisnya, bisa benar-benar sukses dipraktekkan di komputer saya. Lebih parahnya lagi, kebanyakan tutorial didasarkan dengan menggunakan image editor delphi jadul yang support hanya 16 warna. Ya gak keren lah. Selain juga males kalo harus install delphi jadul sekedar hanya untuk menggunakan image editornya.

Ada juga tutorial yang cukup mantep, menggunakan XN Resource Editor dalam membuat resource file image (.dcr) untuk icon komponen Delphi. Bahkan dalam tutorial tersebut, penulisnya menggunakan Delphi XE, sialnya, dia bilang, bahwa image komponen delphi (XE) hanya support 4 bit warna alias 16 warna. Sial! Ini mah sama aja dengan mengikuti aturan jadul untuk delphi jadul. Moh ah!

Ketika saya coba donwload XN Resource Editor di sourceforge, saya coba buka .dcr nya komponen Zeos.. Wow! Image yang digunakan mempunyai kedalaman warna sampai 32 bit! So, omong kosong kalo image untuk komponen Delphi dibatasi hanya 4 bit atau 16 warna saja (kecuali kalo delphi jadul mungkin).


















Gambar 3: Komponen Zeos Menggunakan Image 32 bit warna

DCR File

Sebelum melangkah lebih jauh dalam , alangkah baiknya kita kenal dulu dengan perangkat-perangkat dasar dalam pembuatan icon atau image untuk komponen.
DCR file atau file dengan akhiran .dcr adalah file resource yang digunakan untuk menyimpan gambar bmp dengan cara tertetu yang kelak digunakan sebagai gambar icon pada komponen yang terlihat saat design time.

DCR file sama dengan file resource yang lain biasanya berakhiran .res, hanya saja digunakan untuk keperluan khusus sebagaimana di atas. Selain .dcr dan .res, file .exe ataupun .dll bisa pula difungsikan sebagai file resource.

Untuk membuat file dcr kita bisa menggunakan aplikasi XN Resource Editor yang bisa didownload secara gratis di link http://sourceforge.net/projects/portableapps/files/XN%20Resource%20Editor%20Portable/
Jika file .res berfungsi sebagai file resource sebagaimana file .dcr, bisakah kita menggunakan file .res untuk menggantikan file .dcr untuk keperluan icon/image komponen buatan sendiri di delphi? Salah satu tutorial yang saya dapatkan di google, menunjukkan step by step bagaimana kita bisa memanfaatkan file .res untuk menggantikan file .dcr dalam memberkan image/icon pada komponen. Sayangnya, saya sudah coba berkali-kali ternyata hasilnya nihil. Dan pada kenyataannya, baik pada komponen gratis atau komersil, mereka semua menggunakan file .dcr. Padahal kalo bisa sih, memang asik, karena kita bisa membuat file .res cukup dengan IDE delphi saja (saya menggunakan Delphi XE).

Step By Step Creating Delphi Component Icon

Yang kita lakukan pertama kali adalah kita membuat file .dcr yang menyimpan file gambar untuk komponen kita. Saya menggunakan XN Resource Editor, untuk melakukannya. Namun sebelumnya, kita akan membuat komponen sebagai kelinci percobaan. Jika Anda telah mempunyai komponen buatan yang hendak Anda beri icon, maka langkah pembuatan komponen dapat Anda abaikan.


Membuat Komponen dalam Package

1. Pada Delphi (punya saya Delphi XE), pilih menu FileNewPackage
2. Simpan project package tersebut dengan nama SpyPack
3. Pada jendela Project Manager, klik kanan, pilih menu Add NewOther
4. Pada kotak dialog New Items pilih Delphi Files  Component klik Ok
5. Pada kotak dialog New Component pada kotak Search ketikkan Tcomponent
6. Pada kolom Component Name pilih TComponent, kemudian klik Next
7. Pada isian Class Name, isikan: TSpyAgent
8. Pada isian Pallete Page, isikan: SpyPack kemudian klik Finish
9. Pada dialog Save As pilih ketikkan: spyagent.pas


Gambar 4: SpyPack setelah ditambahkan komponen TSpyAgent

Membuat File Dcr


1. Pilih gambar untuk icon komponen yang akan disimpan di file dcr dengan ukuran 24x24 pixel
Anda bisa aja sih, merancang gambar icon langsung melalui XN Resource Editor, tapi bagi saya cara itu terlalu lama (selain juga paling hasilnya jelek he he he :P), cara termudah cari gambar apa saja yang sesuai (bisa dari harddisk Anda atau lebih baiknya cari di iconfinder.com) berapapun kedalaman warnanya, set ukurannya menjadi 24x24 pixel (gunakan Photoshop atau apalah... pokok e jadi 24x24 pixel. Kalo pake Photoshop aja nggak bisa, sono ke laut! Nyebur kagak usah kembali. Malu-maluin negara aja heheheh... wkakakakakakak) , kemudian simpan sebagai file .bmp.





























Langkah 1: Gambar yang mau saya jadikan icon




















Langkah 2: Saya atur menjadi 24x24 pixel dengan menu Image Size Photoshop

2. Buka XN Resource Editor, pilih FileNew, kemudian pilih ResourceImport Image Resource
3. Pilih gambar .bmp hasil dari photoshop tadi


















Gambar 5:Image bmp setelah diimport di resource editor

4. Beri nama icon tersebut dengan nama class komponen yang dimaksud, dengan semua huruf dijadikan kapital (untuk memberi nama, klik pada angka 1 diatas, kemudian tekan tombol F2). Jadi kalo misalnya nama kelas komponennya TButton, maka nama icon tadi menjadi TBUTTON, dalam contoh di atas, nama kelas komponennya adalah TSpyAgent maka nama iconnya menjadi TSPYAGENT.


















Gambar 6: File dcr yang gambarnya telah diberi nama

5. Simpan file resource tersebut dengan nama yang sama dengan nama file unit komponen hanya saja dengan ekstensi .dcr. Jadi sesuai contoh di atas, file unit komponen buatan kita adalah spyagent.pas, maka file dcr nya menjadi spyagent.dcr.
6. Simpan seluruh file tersebut: package, file unit spyagent.pas, dan resource spyagent.dcr dalam satu folder yang sama

Memasang Komponen Buatan Sendiri dalam IDE Delphi

Sebelum menginstall komponen buatan sendiri ke IDE Delphi, kita harus menambahkan satu baris kode pada kode sumber package agar file dcr ikut tercompile sehingga gambar bisa muncul pada komponen kita di pallete page Delphi. Untuk melakukannya:

1. Pada jendela Project Manager, klik kanan SpyPack.bpl, kemudian pilih View Source





























Gambar 7: View Source

2. Tambahkan ketikan {$R 'spyagent.dcr'} sehingga source berubah sebagai mana gambar berikut:

























Gambar 8: Kode Sumber package

3. Simpan semua file, kemudian build file package tersebut, kemudian pilih install. Semua menu-menu tersebut dari klik kanan pada file package.



















Gambar 9: Menu Build dan Install

4. Buat project baru, yang ada form nya, pada pallete page component SpyPack, Anda akan lihat komponen baru kita nongol dengan manisnya









Gambar 10: Komponen TSpyAgent


Jika Anda tertarik untuk melihat materi-materi tutorial yang saya dapatkan dari google siapa tahu di komputer Anda bisa diterapkan, Anda bisa donwload di
http://www.ziddu.com/download/21402510/materihtmldelphicomponenticon.7z.html dan http://www.ziddu.com/download/21402511/Delphi_IDE_Component_Icon_Generation.pdf.html


Rabu, 26 Desember 2012

Mendapatkan/menampilkan daftar folder dan sub foldernya dalam File txt


Seringkali ketika menginstall komponen di delphi, kita diharuskan mengikutkan daftar folder dimana file-file sumber (.pas) dari komponen tersebut ke dalam library path. Apabila paket komponennya tidak terlalu besar sih.. nggak masalah, atau apalagi kalau sudah dipaket dalam bentuk installer siap jalan seperti komponen JEDI.

Namun bagaimana jika paket komponen tersebut sangat banyak yang file-file sumbernya disimpan di banyak folder seperti komponen DevExpress, dan komponen didistribusikan tidak dalam bentuk installer? Tentunya copy paste berulangkali menjadi sangat melelahkan dan membosankan. Atau, lebih parahnya lagi, karena kita harus menginstall Delphi kembali disebabkan windowsnya ngadat? Tentunya pekerjaan copy paste folder dan subfolder ini menjadi hal yang mengerikan.

Nah, kita dapat mendapatkan daftar dari folder dan sub foldernya dari suatu direktori kemudian menyimpannya dalam suatu file txt dengan memanfaatkan command prompt windows. Yakni dengan mengetikkan perintah

dir /s /ad /b>filelist.txt

 pada command prompt windows, seperti dalam contoh berikut:


pada contoh screenshot di atas, saya mendapatkan hasil

D:\master\Component Delphi\ZEOSDBO-6.6.6-stable\src\component
D:\master\Component Delphi\ZEOSDBO-6.6.6-stable\src\core
D:\master\Component Delphi\ZEOSDBO-6.6.6-stable\src\dbc
D:\master\Component Delphi\ZEOSDBO-6.6.6-stable\src\parsesql
D:\master\Component Delphi\ZEOSDBO-6.6.6-stable\src\plain
















patut dicoba neh!



Sabtu, 08 Desember 2012

Membuat Dropdownlist Pencarian Professional

Bagaimana kita membuat tampilan dropdown list yang pada daftarnya, menampilkan warna berbeda pada deretan huruf yang sesuai input pencarian?


Tentunya kita sering melihat tampilan dropdown atau combobox yang menampilkan daftar hasil dengan memberikan warna berbeda pada deretan huruf yang sesuai dengan pencarian. Nah, bagaimana hal itu bisa kita buat dengan dengan Delphi, sehingga aplikasi kita bisa terlihat lebih professional? Kita bisa membuatnya dengan memanfaatkan gabungan komponen TEdit, TListBox, dan TTimer.

TEdit berfungsi sebagai inputan, kata pencarian.

TTimer properti Enabled di set False, berfungsi memberikan delay saat kata pencarian diinputkan pada komponen TEdit, sehingga mengurangi akses ke database yang jika terlalu sering membuat respon aplikasi kita berkurang.

TListBox berfungsi menampilkan hasil pencarian dari database, setelah inputan kata dimasukkan pada komponen TEdit. Properti Style kita set menjadi lbOwnerDrawVariable, karena kita hendak menggambar sendiri penulisan item sehingga bisa kita set menjadi warna warni.

Dalam hal ini, saya menggunakan database Access (.mdb) dengan komponen ADO. Tabel yang diakses adalah tabel santri (santri saya yang culun2, and rada ndablek)

Alur logika sangat sederhana. Ketika user mengetikkan deretan karakter, maka event onkeypress pada TEdit langsung dijalankan. Dimana, didalamnya terdapat perintah untuk mengaktifkan timer.
Ketika timer berjalan, dia akan mengecek, apakah deretan karakter yang dimasukkan seperti sesudahnya atau tidak? Jika tidak maka query di database dijalankan.

Hasil query dimasukkan dalam Item TListBox, Height ListBox disesuaikan banyaknya item, terus ListBox ditampilkan.

Event OnKeyPress juga memerintahkan refresh pada komponen TListBox, hal ini penting, agar Event OnDrawItem pada ListBox dijalankan.

Pada Event OnDrawItem inilah, warna deretan huruf yang bersesuaian dengan inputan pada TEdit diberi warna merah.

Gitu aja deh.

Donwload Source & Executable


Senin, 26 November 2012

Membuat Multi Form Pages

Pernahkan terbetik keinginan Anda untuk membuat aplikasi dengan banyak form, namun ditampilkan dalam bentuk page seperti tampilan Delphi?

















Teknik yang saya gunakan dalam program saya, adalah ‘menempelkan’ form pada tabsheet page control. Apa pengertian ‘menempel’ yang saya maksud?

Ketika misalkan Anda membuat suatu form, dimana Anda meletakkan control TPanel pada form, kemudian meletakkan control TEdit pada TPanel, maka yang terjadi adalah control TPanel itu ‘menempel’ pada form, dan control TEdit menempel pada TPanel.

Apa yang terjadi ketika suatu control itu ‘ditempelkan’ pada control yang lain? Yang terjadi adalah Property Parent pada control yang ditempelkan itu merujuk pada control yang ditempeli. Jadi pada kasus di atas, Property Parent pada TPanel merujuk pada form, sedangkan Property Parent pada TEdit merujuk pada TPanel.

Nah, kita bisa merubah letak suatu control ditempatkan dengan merubah-rubah Property Parentnya, sepanjang control untuk tujuan tempelannya ini adalah merupakan Container.

Apa itu Container? Suatu kontrol dikatakan Container apabila ia dapat ‘menampung’ atau ‘ditempeli’ control yang lain, misalkan control TPanel, TForm, TabSheet, dan lain-lain.

Pada aplikasi saya, saya mengisikan pada property Parent TForm kepada TabSheet yang saya kehendaki.

Anda bisa download contoh source codenya di
http://www.ziddu.com/download/20979336/multiformpages.zip.html


Minggu, 25 November 2012

membuat Combobox Key Value, combobox yang menyimpan data tesembunyi




Sering sekali dalam membuat suatu program database, kita memerlukan suatu komponen combobox yang dapat menyimpan key dari value yang ditampilkan pada combo box, untuk merepresentasikan field kunci dari suatu tabel master.

Misalkan pada inputan data pegawai yang disitu terdapat jabatan. Biasanya kita membuat tabel jabatan yang berisi field kunci dan field nama jabatan. Kemudian pada form jabatan, kita ingin terdapat combo box yang menampilkan nama jabatan namun sebenarnya mengandung nilai dari field kunci, namun saat data di posting ke database, field kunci inilah yang diposting, ke data pegawai, bukan nama jabatan.

Nah, bagaimana membuat combo box yang bisa menyimpan nilai ‘tersembunyi’ ini? Silahkan download sample code berikut.

http://www.ziddu.com/download/20968152/combovalue2.zip.html

Dalam pengembangan selanjutnya, tentu Anda dapat mengisikan nilai dari database pada combo box.

Keterangan: sample code telah mengandung file .exe yang siap untuk di-jalankan. Jangan lupa untuk mengklik tombol ‘Start’ terlebih dahulu agar combo box terisi data terlebih dahulu.

Source code dibuat dengan Delphi XE, namun tetap dapat di Run di delphi sebelumnya dengan beberapa penyesuaian, karena hanya menggunakan komponen dasar bawaan delphi.







Sabtu, 17 November 2012

Membuat Email Extractor

Pernah suatu ketika saya ingin mempromosikan suatu produk. Saya berpikir, selain membuat blog/website dan mempopulerkannya, saya juga ingin mengirim email sebanyak2nya. Pertanyaannya, darimana saya bisa mendapatkan email tersebut?

Setelah berpikir, salah satu cara mendapatkan email adalah dari website yang kira2 disitu mencantumkan alamat email target konsumen saya. Saya memanfaatkan Google untuk mencari website yang saya masuk. Akhirnya ada beberapa. Namun saya berpikir kembali, alangkah repotnya jika harus copy paste - copy paste alamat2 email tersebut. Seandainya saya bisa mengekstrak alamat2 email tersebut menjadi daftar alamat email siap pake, tentunya lebih menarik.

Berangkat dari pikiran tersebut, lahirlah email extractor bikinan sendiri. Cara kerjanya sangat mudah, copy paste halaman website ke aplikasi buatan saya, lalu setelah ditekan tombol Extract, maka aplikasi saya akan memparsing, dan mengambil alamat email  yang berserakan di halaman tsb  berdasarkan karakter @ .

Namun terkadang, untuk menghindari spam, orang menyamarkan alamat emailnya dengan mengganti karakter @  misalnya dengan [at]. Hal ini sudah saya antisipasi, Anda dapat membuka source code cari konstanta C_EMAIL_SIGN dan masukkan kemungkinan pengganti karakter @  dan memisahkan masing2nya dengan titik koma ; Pada source code saya, [at] telah diantisipasi.

download source code
download exe

source code saya dibuat dengan Delphi XE1, jika Anda menggunakan versi yang lebih lama, misalkan Delphi 7 jangan khawatir. Coba aja dibuka dan dicompile. Jika muncul error saat source code dibuka atau saat kompilasi, abaikan saja. Hal tersebut biasanya karena ada tambahan  property komponen Delphi XE yang disimpan di file dfm nya yang tidak terdapat pada Delphi versi sebelumnya. Jika masih error juga, buat saja project baru kemudian add unit u_get_mail3.pas ke project Anda dan compile.


Tentunya, kelak Anda dapat mengembangkan source code saya, misalkan dengan memanfaatkan komponen IdHTTP, extract email tidak lagi berdasarkan copy paste, tapi langsung mengekstrak nya dari internet. Selamat berkreasi.

Jumat, 16 November 2012

Review Komponen Database Delphi

Kali ini saya akan membahas komponen database yang pernah saya gunakan dalam mengerjakan proyek2 database saya.

ADO

Merupakan komponen standard yang terpaket dalam delphi. ADO berfungsi untuk mengkoneksikan database yang tersedia driver (provider) nya dalam windows. Umumnya, ADO digunakan untuk berkomunikasi dengan database access (versi .mdb 2003 dan sebelumnya)  via Jet 4.0 OLE DB, dan SQL Server via OLE DB provider .SQL Server. ADO bekerja sangat baik dengan dua database produk Microsoft tersebut dengan provider yang saya sebutkan. Sayangnnya hingga kini saya belum menemukan provider yang pas untuk koneksi dengan Access 2007 ke atas (.aaccdb)

ADO dapat pula digunakan untuk berkomunikasi dengan mysql melalui myodbc. Sayangnya, tidak bisa multiple statement (eksekusi dua atau lebih perintah sql sekaligus dalam satu kali run)

ZEOS

Merupakan komponen database 3rd party free, open source, untuk koneksi berbagai database. Hanya saja, hingga versi ke 7 (alpha), ZEOS masih tidak stabil untuk berkomunikasi dengan SQLite. Banyak muncul error disana sini. Namun bekerja dengan sangat baik dengan MySQL. Saat tulisan ini ditulis, Zeos 7.0.1 telah di-release, sayangnnya saya belum mencoba kehandalannya.
Situs: http://zeos.firmos.at/

Unidac

Hingga kini, bagi saya, unidac adalah komponen database terbaik. Bisa berkomunikasi dengan banyak database dengan sangat stabil. Namun masih terjadi masalah (pada versi 4.0.1) ketika berkomunikasi dengan aaccdb (access 2007 ke atas)
Situs: http://www.devart.com/unidac/