Friday, 9 November 2012

Validating numeric input

Validating numeric input is a common problem -  you want the user to enter a number but how do you make sure he enters a valid one?  User text is normally entered via a TEdit component.   In the object inspector window (F11) there is an events tab and if you click there one of the events will be "OnKeypress".  Double click there and you get the skeleton of a method that is called whenever the user enters a character in the edit box.  We can use this exit to check that the entered character is valid. 

For integers the valid characters are '0' through '9', '-',  and the backspace character.  ('+' could be included but is always redundant since no sign in front of a number means '+')    Delphi defines this set of 12 characters '0' through '9', '-'  and  backspace  as ['0'..'9','-',#8].  (#8 is the decimal number generated when you press the backspace key.)  If the character entered is not one those, we can set the key value to 0 (which tells windows to ignore this key) and beep to let the user know that something is wrong.   The other test we can perform here is to test that there is no more than one  or  '-'  and that if a '-' is  entered it will go at the beginning. 

To be completely safe, there is one other potential error which OnKeyPress can't catch.  We can use an OnChange exit to detect an empty text string and replace it with a '0'.  

Validating floating point numbers (with decimals) is similar except that we must add '.' to the set of valid characters in OnKeyPress.  For generality we can use the global predefined constant DecimalSeparator in place of '.'. (Europeans exchange the dot and comma from proper usage.)  We need to make sure that there at most only a single  DecimalSeparator in the number.    OnChange coding is unchanged from the integer version. 

A program illustrating these techniques is available for download here.  Notice that the same OnChange exit can handle both the integer and floating point number validation.   Similarly, multiple integer edit fields (or multiple floating point edit fields) could share the same OnKeyPressprocedure.  As an added bonus, the program uses a TMediaPlayer component and .wav files to give a little more than the normal beep when an error is made.  


The user holds down a mouse button and drags it around to form a track, then presses the Start button to have the robot follow it.   There are separate methods for OnMouseDownOnMouseMove and OnMouseUp events.  The MouseDownprocedure sets a flag to tell the MouseMove routine that we're drawing, it also does some initialization stuff like setting a nice fat  pen we'll use for drawing the track.    MouseMove  draws a line from the last point to the current point.  It also waits for 10ms so that we won't create more than about 100 points per second of drawing.   MouseUp resets the flag and moves the robot to the beginning point. 
When the Start button is pressed, (creating an OnClick event),  we just start moving the  robot point by point to retrace the steps.   The same 10ms delay is inserted between moves so it should move about as fast as the original line drawing speed.    The only tricky thing about positioning the robot is that we want to center it on the track.  All references to locations are by the top left corner though so we subtract half the width and half the height of the robot from the current point to get a location for its top left corner.
A second version is included in the source download.  It has a OnPaint routine to redraw the track after the robot moves over it and a few other enhancements that I'll leave for you to check out on your own.   

Running/Exploring the Program 

Download source

Download  executable

Simple Delphi Calculator

 Pascal is readable enough that browsing the code will be a more understandable description of the process than anything I can write in natural language.  Just recognize that Windows is a messaging system so typically programs just hang out doing nothing until they get a message.  When you see routines like DigitBtnClickPlusBtnClick, etc.  that routine is the one that was called when that button was clicked.  

There is not much difference in processing the numeric keys, so I wrote an AddDigit procedure to display the digit and add in on to the string version of the number being built.   Similarly, most of the operation handling is similar, as long as we remember to add, subtract, multiply or divide when the time comes.   So we have a HandleOp procedure for those things.  Note that we can't really do anything when the user enters the operation because we don't have the second value yet.  So, we'll just hold on to it until we need it.   We also know the the user has finished entering a value when we see the operation code, so we can process it according the operator that preceded it and get ready to build the next number.   

There's a Reset procedure that's called to clear out the displays and reset internal flags, etc.  We have to do this on initial input, or if the user presses Clear, or when the user presses the next digit after he has pressed the = key.
The program has 55 or so user written lines of code, more than I would have guessed.   But there area few tricky things.  

We need to keep the user from entering more than one decimal point in the number.

We need to handle the display intelligently when * or / are mixed with + or -.  In your normal calculator and in this one, if you enter 1, +, 2, *, 3, the result is 9  because 1+2 = 3 and 3* 3 is 9.  But because of the precedence rules of arithmetic, multiplication and division in expressions are performed before additions ,and subtractions, so 1+2*3 written as an expression should = 7.  In this program, we solve the problem by inserting parentheses in the expression, so the above example is displayed as (1+2)*3=9. 

To reduce the number of lines of code, I used a trick that I probably would not use in a more complex project:  Rather than have 10 different routines to process the 0 to 9 buttons, I named them Btn0, Btn1, Btn2, etc and extract the 4th character of the name as the desired digit  in a common routine. 
I think that should explain enough of the program logic, so go ahead and take look.

Running/Exploring the Program 

Download source

Download  executable

Wednesday, 7 November 2012

Membuat Hyperlink menuju Halaman Website dengan Delphi

Pernahkah anda membuka sebuah aplikasi yang menampilkan alamat web tertentu kemudian
ketika alamat web tersebut di klik , maka otomatis Brower Internet akan terbuka untuk
membuka halaman web yang dimaksud,

Jika anda ingin membuat aplikasi semacam itu, berikut ini adalah caranya : masukkan
komponen – komponen berikut ini ke dalam Form 1
pada bagian uses ketikkan ShellAPI sehingga menjadi sbb

Untuk tutorial selengkapnya silahkan download Ebooknya disini : DOWNLOAD

Memasukkan file Flash Ke Delphi 7

Memasukkan file Flash Ke Delphi 7 Komponen – komponen standard pada Delphi 7 belum ada yang dikhususkan untuk memasukkan file animasi Flash dengan extensi file *.swf ke dalam area kerja Delphi 7.Untuk itu perlu dilakukan import ActiveX Controll. Caranya adalah sebagai berikut :

Buka Delphi 7 kemudian buka tab component  import active control… Silakan pilih Shockwave Flash (Version 1. 0) kemudian klik pada tombol Install... yang ada di bawah pilihan tersebut sehingga muncul kotak dialog instalisasi sebagai  berikut

Untuk Selengkapnya silahkan Download Ebooknya disini : DOWNLOAD

Form Cantik Dengan Delphi

Akhir-akhir ini perkembangan perangkat lunak melaju dengan pesatnya. Meskipun perkembangannya
tidak sebanding dengan perangkat keras, perkembangan software ini patut kita acungi jempol. Seiring
dengan berjalannya waktu, banyak perusahaan software yang muncul dan tenggelam. Muncul akibat
dorongan serta semangat dan tenggelam karena tidak kuat dalam persaingan. Bisnis software memang
cukup menjanjikan utamanya karena pasar yang begitu luas. Namun pasar yang luas tersebut
terkadang malah menjadi bumerang karena kita harus bersaing dengan perusahaan asing yang
notabene dalam hal modal dan sumber daya manusia mereka lebih unggul.

Selain aplikasi yang kita bangun memiliki keunggulan dalam hal teknologi, maka hendaknya aplikasi
tersebut juga memiliki design interface yang bagus disebabkan kita selalu berhubungan dengan
konsumen yang notabene sebagian besar konsumen di negara kita masih menganggap bahwa
tampilan merupakan salah faktor yang cukup penting sebagai pertimbangan dalam membeli
perangkat lunak.

Bagi anda yang sudah sering bergelut dengan pemrograman tentu tidak asing dengan apa yang
dinamakan form. Form merupakan bingkai dasar dari sebuah aplikasi yang umumnya berbasis GUI
(Graphic User Interface). Form standar atau form tradisionil umumnya berbentuk kotak. Bagi
seseorang yang dinamis dan berjiwa seni tinggi tentu akan bosan dengan design form seperti ini.
Salah satu cara untuk memodifikasi bentuk form adalah dengan menggunakan region. Fungsi HRGN
atau region dapat memodifikasi bentuk form menjadi model roundrect, rectangular, elliptical,
polygonal dan sejenisnya berikut kombinasi bentuk-bentuk dasar tersebut (combinergn).

Setelah lama bergelut dengan region, saya menemui kendala yaitu akan cukup sulit menggunakan
region bila bentuk form yang akan kita buat tidak sama dengan bentuk dasar ataupun kombinasi dari
region. Selain itu waktu yang dibutuhkan juga cukup lama. Lalu saya memutuskan untuk mencari
komponen yang dapat merubah form standar. Setelah mencari kemana-mana akhirnya saya
menemukan komponen dxfShapedForm, bagian dari ExpressForumLibrary(tm) Componen Suite
yang dikembangkan oleh Developer Express Inc. Jika anda membeli paket original Delphi maka anda
akan menemukan komponen ini pada cd Delphi Companion Tools.

Melihat contoh yang disertakan saya langsung tercengang. Ternyata membuat form yang cantik dapat
dilakukan dengan mudah dan cepat. Kita tinggal menempatkan komponen pada form, meload gambar,
mengaktifkan komponen dan form cantik dapat segera digunakan. Akhirnya saya berfikir lagi
bagaimana kalau digunakan komponen standar Delphi saja agar program menjadi lebih ringan. Dari

Untuk selengkapnya silahkan download Ebooknya disini : DOWNLOAD

Citra dalam Delphi

menjelaskan dan mengimplementasikan pembuatan program penampil citra dalam Delphi

Delphi tidak menyediakan secara khusus rutin-rutin 
untuk pengolahan citra, oleh karena itu perlu dibuat 
sendiri program untuk mengolah citra. Namun Delphi 
telah menyediakan sarana untuk menampilkan citra, 
yaitu melalui komponen TImage yang terdapat pada 
palet komponen Additional. 

Komponen ini memiliki properti Picture yang digunakan 
untuk menyimpan data citra. Citra yang akan ditampilkan
diambil dari file gambar yang dapat ditentukan pada saat 
mendesain dengan cara mengisi nilai properti ini, atau
pada saat program dijalankan dengan menggunakan 
prosedur LoadFromFile.

Subproperti yang penting pada Picture 
antara lain adalah:
Height, berisi nilai tinggi citra
Width, berisi nilai lebar citra
Bitmap, berisi data format dan piksel citra.  
Pada materi ini pengolahan dilakukan 
terhadap nilai-nilai piksel pada Bitmap.

Untuk Ebook selengkapnya seilahkan di DOWNLOAD

Kumpulan Kode-kode pada Delphi 7.0

Kode progresbar pada Delphi
Kode pembelian pada Delphi
Membuat loding pada Delphi
Kode membuat aplikasi winamp dengan Delphi……

Download Ebooknya disini : DOWNLOAD

Mengakses database dengan Delphi 7.0 Microsoft Access

Dalam tulisan ini akan dijelaskan secara ringkas mengenai cara pengaksesan database yang dibuat
dengan Microsoft Acces yang kemudian data tersebut diolah/dimodifikasi dengan menggunakan
program Borland Delphi 7.0. Program yang dibuat terbatas pada menampilkan membuat database,
pembuatan program database, membaca database, menghapus database.


Database adalah sekumpulan data yang disusun sedemikian rupa sehingga mampu menghasilkan
sebuah informasi yang informatif bagi penggunanya.

Proses Pembuatan Program

Buat database dengan Ms Access dengan nama “Proyek Akhir.mdb”
1. Buka Ms Acces

Dengan field-field sebagai berikut:
No Nama Filed
Data type













Field Size

Field Size

Field Size

Field Size






Karena tutorialnya terlalu panjanga maka silahkan download ebooknya : DOWNLOAD

Mengakses Database pada Delphi dengan ADO


Bahasa pemrograman Delphi dapat digunakan untuk berbagai keperluan baik untuk
perhitungan matematis, aplikasi perkantoran, aplikasi multimedia, pembuatan aplikasi pengolah,
aplikasi kontrol industri sampai kepada aplikasi database. Pada materi ini akan dijelaskan bagaimana
cara mengakses database MS Acces dalam Delphi menggunakan Komponen ADO.
Mungkin anda pernah atau bahkan sering mengembangkan program database dengan Delphi
atau Visual Basic. Anda dapat menggunakan database paradox, dbase maupun MS Acces, dan
mungkin anda mengalami masalah dalam distribusi file yang anda bangun mempunyai ukuran yang
sangat besar karena anda harus menyertakan file database beserta kelengkapannya. Hal ini tentu tidak
menguntungkan terutama jika harus mendistribusikannya lewat email.
Disini akan dibahahas tentang aplikasi database dengan bahasa pemrograman Delphi. Untuk
mengakses database dalam MS Acces, mulai Delphi 5 telah menyediakan komponen ADO yang akan
memudahkan dalam mengelola database yang akan kita bangun. Dengan ADO pada Delphi distribusi
program hanya membutuhkan file exe dan database-nya (*.mdb) saja. Tentu ini untuk program yang
sederhana. Sehingga anda dapat mendistribusikannya dengan mudah.
Memulai Program database Dengan Delphi
Delphi telah menyediakan komponen database yang akan memudahkan kita dalam merancang
dan membangun aplikasi database. Komponen-komponen database dikelompokkan dalam
Component Pallete Data Acces Data Control dan BDE Serta ADO seperti pada gambar dibawah

 Data Acces dan BDE banyak  berperan pada penentuan sumber data seperti tabel, SQL, query
maupun koneksivitasnya. Contoh komponen ini yaitu Table dan Datasource.

 Data Control lebih menekankan pada pengaturan data yang terpasang pada aplikasi sepeti
DBLabel, DBNavigator, DBGrid, DBImage, DBMemo, DBEdit, DBCombobox dan lain

 ADO digunakan untuk komunikasi Program dengan Database MS Acces sehingga data yang
dibuat dengan MS Acces akan dapat diintegrasikan dengan Delphi
Latihan 1. Membuat Program database Dengan Delphi
Untuk membuat program database dengan Delphi, sebelumnya anda harus membuat database dalam
MS Acces terlebih dahulu.

Contoh database dalam MS. Acces dengan Nama pemasaran yang berisi 4 tabel dengan nama Dosen,
Mahasiswa, Nilai dan T_Kuliah
Buatlah Form dalam Delphi dan berilah komponen-komponen seperti terlihat pada gambar berikut :
Daftar Komponen Yang Digunakan

 ADO Connection Ada Di Pallete ADO
 ADOTable Ada di Pallete ADO
 DataSource Ada di Pallete Data Acces
 DBNavigator Ada di Pallete Data Control

Karena terlalu panjang maka silahkan download versi Ebook nya saja, silahkan dapat di download disini : DOWNLOAD


Modul ini berisi tentang tata cara pembuatan aplikasi sms gateway menggunakan Borland Delphi 7 serta pembuatan databasenya menggunakan MySQL, walaupun pada modul ini Delphi yang dipakai versi 7, tapi tidak jauh berbeda caranya ketika kita mempraktikan pada Delphi versi 5, 6 atau pada Delphi versi lebih tinggi. Akhir kata semoga dapat bermanfaat dan jangan pernah bosan untuk belajar! 

1. Pendahuluan 
- SMS Gateway : merupakan komunikasi dua arah, mengirim dan menerima, digunakan 
untuk SMS keyword, polling, ataupun informasi lainnya. 
2. Software Yang Harus Di Persiapkan 
- MySQL versi 5, dapat diinstall dengan paket software XAMPP (Apache MySQL PHP 
Perl) disarankan versi 1.7.2 ke atas, atau bisa anda diinstall memakai paket software yang 
lain seperti AppServ , PHPTriad, ataupun WAMP. 
- Borland Delphi 7 atau versi lebih tinggi (Sebagai Program Aplikasi)
- Gammu : Tools aplikasi sms gateway, dapat di unduh di . Gammu 
yang dipakai pada modul ini adalah versi: Gammu 1.29.92 
- Zeoslib: seperangkat komponen database untuk 
MySQL, PostgreSQL,Interbase, Firebird, MS SQL, Sybase, Oracle dan SQLite untuk 
Delphi, FreePascal/Lazarus, Kylix dan C Builder. Dapat di unduh di

3. Konfigurasi Gammu
- Spesifikasi Gammu dan Modem Yang Dipakai
Versi Gammu: Gammu 1.29.92 
Modem: Modem SMS Gateway “Wavecom”  
- Konfigurasi Gammu
- Copykan file gammurc & smsdrc dari: 
C:\Program Files\Gammu 1.29.92\share\doc\gammu\ examples\config  
Ke: C:\Program Files\gammu\bin\ 
- Dengan menggunakan notepad,atur file gammurc yang ada pada : 
C:\Program Files\gammu\bin\gammurc  
device = com23: 
connection = at115200  
- Dengan menggunakan notepad,atur file smsdrc yang ada pada : 
C:\Program Files\gammu\bin\smsdrc  
device = com23: 
connection = at115200 
user = root 
password =  
pc = localhost  
database = sms

- Langkah selanjutnya, untuk mengecek bahwa gammu dan modem wavecom sudah jalan, 
coba buka cmd (command prompt) 
- Kemudian masuk ke: 
- Tes Kirim SMS
- Menjalankan Service Gammu
Langkah selanjutnya, setelah service gammu aktif, coba uji dengan mengirim sms ke 
nomor yang telah dimasukan di modem dengan format yang telah disetting pada trigger 
yang dibuat.  

4. Pembuatan Database sms di MySQL
- Buka database MySQL melalui phpMyAdmin  ataupun melalui tools GUI MySQL 
lainnya, kemudian buatlah database sms : create database sms;
- Untuk pembuatan tabel-tabelnya kita tidak akan merancang dari awal karena akan 
mengimport dari file mysql.sql bawaan dari installasi gammu. Kalau gammu nya kita 
install di C biasanya secara default ada di : 

Karena terlalu Panjang ,,, maka silahkan download bacaannya yang sudah terangkum di dalam ebook saja ya
silahkan download disini : DOWNLOAD

Install Fortesreport community Delphi 7 dan RX Berlin

Download  Pertama2 kita harus punya file installernya terlebih dahulu, download