Translate
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
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
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.
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 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)
Situs: http://zeos.firmos.at/
Situs: http://www.devart.com/unidac/
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/
Senin, 12 November 2012
Mysql Manager Review
Tool manager untuk mysql terbaik menurut saya adalah EMS SQL Manager
http://www.sqlmanager.net, sayangnya berbayar
berikut ini kelebihannya,
Yang kedua adalah Heidi SQL, Gratis
http://www.heidisql.com
Hanya saja, dibandingkan EMS masih kalah dari sisi tampilannya. Sehingga bekerja dengan HeidiSQL tidak akan seproduktif EMS. HeidiSQL mampu men-dump tabel, function, procedure, views, dan trigger
Berikutnya, adalah PHP MyAdmin. Gratis.
Hanya saja, PHP MyAdmin sejauh artikel ini saya tulis, hanya mampu men-dump tabel saja.
http://www.sqlmanager.net, sayangnya berbayar
berikut ini kelebihannya,
- Tampilan yang menarik dan efektif, sehingga sangat membuat kita lebih produktif
- Hasil sql dump nya sempurna, tidak pernah error, mampu mendump tabel, function, procedure, views, trigger
- Fasilitas komplit
Yang kedua adalah Heidi SQL, Gratis
http://www.heidisql.com
Hanya saja, dibandingkan EMS masih kalah dari sisi tampilannya. Sehingga bekerja dengan HeidiSQL tidak akan seproduktif EMS. HeidiSQL mampu men-dump tabel, function, procedure, views, dan trigger
Berikutnya, adalah PHP MyAdmin. Gratis.
Hanya saja, PHP MyAdmin sejauh artikel ini saya tulis, hanya mampu men-dump tabel saja.
Jumat, 09 November 2012
Alternatif function CHR() Delphi
Untuk menampilkan karakter ASCII, kita biasa gunakan fungsi CHR(number). Number kita isi dengan nomor kode karakter ascii. Ada cara yang lebih simple, kita bisa gunakan tanda "#"
Jadi misalkan kita menuliskan Chr(65), maka hasilnya akan sama dengan kita tuliskan #65.
Jadi misalkan kita menuliskan Chr(65), maka hasilnya akan sama dengan kita tuliskan #65.
Langganan:
Komentar (Atom)


