Belajar Lazarus Free Delphi

Discussion in 'Programming & Reverse Engineering' started by Adhimedia_cell, Nov 19, 2014.

  1. Adhimedia_cell

    Adhimedia_cell Moderator Moderator

    Messages:
    1,164
    Likes Received:
    66
    Trophy Points:
    58
    [​IMG]

    Proyek open source Lazarus dimulai pada bulan Februari 1999. Didirikan pertama kali oleh tiga orang, yaitu: Cliff Baeseman, Shane Miller dan Michael A. Hess. Lazarus adalah Delphi kompatibel IDE cross-platform untuk Free Pascal. Tidak seperti Java yang menulis program sekali saja tapi bisa dijalankan di mana saja, Lazarus Free Pascal berusaha untuk menulis sekali tapi dapat dikompilasi di mana saja. Karena compiler yang sama persis tersedia pada semua platform (windows, linux, Mac OS X, dll), itu berarti Anda tidak perlu melakukan apapun recoding untuk menghasilkan produk yang identik untuk platform yang berbeda. Seperti slogannya "Write Once compile Anywhere". Dan kelebihan yang utama adalah Lazarus itu gratis 100% :D bandingkan dengan harga Delphi XE7 sebesar $4,159.00

    Jika anda berminat belajar Lazarus silahkan download di situs resminya http://www.lazarus.freepascal.org/

    Sedangkan untuk panduan referensi Lazarus dalam bahasa Inggris bisa dibaca di http://wiki.freepascal.org/

    Untuk forumnya Lazarus Free Pascal di http://forum.lazarus.freepascal.org/

    Panduan dan forumnya itu dalam bahasa Inggris, untuk versi Indonesianya mari kita belajar bersama di forum ini.
     
    Last edited: Dec 7, 2014
  2. Adhimedia_cell

    Adhimedia_cell Moderator Moderator

    Messages:
    1,164
    Likes Received:
    66
    Trophy Points:
    58
    Memahami Istilah Object, Property, Method dan Event

    Untuk mempelajari Pemrograman Visual Lazarus Free Pascal, kita perlu mengenal lingkungan pemrograman (Integrated Development Environtmen/IDE) dari Lazarus. Setelah anda sukses menginstalnya silahkan jalankan program Lazarus, maka akan tampil IDE dari Lazarus seperti di bawah ini.

    [​IMG]

    IDE adalah sebuah lingkungan yang berisi tool-tool yang diperlukan untuk desain, menjalankan dan mengetes sebuah aplikasi, yang disajikan dengan baik untuk mempermudah pengembangan aplikasi/program. Seperti gambar di atas IDE Lazarus terdiri atas Menubar, Toolbar, Component Palette, Object Inspector, Source Editor, Form Designer dan Compiler Messages.

    MENUBAR
    Menubar berisi perintah-perintah yang digunakan untuk membuka, menyimpan, mengubah option, dan lain-lain. Sebagian dari fungsi menubar juga dapat dipanggil dengan tombol pada toolbar, maupun dengan cara menekan/klik tombol-tombol fungsi pada keyboard, diantaranya yang paling sering digunakan adalah tombol fungsi F9 yang berfungsi untuk menjalankan aplikasi/program yang kita buat. Tombol fungsi F11 berfungsi untuk menampilkan Object Inspektor, F12 berfungsi untuk menampilkan secara bergantian (Toggle View) Form/Unit. Jika suatu saat anda menjalankan Lazarus dan tidak menemukan jendela Form maupun Source Editor maka tekan Shift+F12 untuk menampilkan Form, dan Ctrl+F12 untuk menampilkan Source Editor. Kelima shortkey tombol tersebut kalau bisa dihapalkan demi kenyamanan dalam membuat program aplikasi.

    TOOLBAR
    Dengan toolbar, kita dapat melakukan beberapa operasi seperti pada menubar hanya dengan mengklik sebuah tombol. Setiap tombol pada toolbar mempunyai sebuah hint yang berisi informasi mengenai fungsi dari tombol tersebut.

    COMPONENT PALETTE
    Component Palette adalah toolbar yang berisi komponen-komponen yang terkumpul dalam tab-tab dalam kategori yang sama dan berfungsi untuk membangun program aplikasi. Isi dari Component Palette ini dapat ditambah sesuai kebutuhan kita. Di component palette inilah Pemrograman Visual Lazarus Free Pascal kelihatan nyata sebagai pemrograman visual yang memudahkan penggunanya, tinggal klik komponennya dan meletakkan dalam form saja.

    OBJECT INSPECTOR
    Sangat diperlukan dalam pembuatan aplikasi. Dengan object inspector, kita dapat merubah properti dan event dari setiap komponen dengan mudah sekali.

    SOURCE EDITOR
    Source editor merupakan bagian terpenting di Lazarus. Jendela ini dipakai untuk menuliskan program Free Pascal. Editor Lazarus sangat canggih, dengan fasilitas-fasilitas highlight, autocomplete untuk memudahkan dalam penulisan kode program.

    FORM DESIGNER
    Diawali dengan jendela kosong dengan nama default Form1 yang memungkinkan kita untuk merancang aplikasi secara visual.

    COMPILER MESSAGES
    Compiler Messages berfungsi untuk menyatakan informasi yang akan diberikan oleh compiler Lazarus. Di dalam Compiler Messages nanti akan ditampilkan hints dan atau peringatan selama proses compile. Dengan membaca pesan disini kita bisa memperbaiki kesalahan program kita dengan mudah.


    Selanjutnya mari kita pahami tentang Object, Property, Method dan Event

    Dikutip dari thread http://forum.djawir.com/programming-reverse-engineering-53/belajar-vb-disini-beginning-master-27683/
    Dalam pemrograman berbasis obyek (OOP), anda perlu memahami istilah object, property, method dan event sebagai berikut :

    Object : komponen di dalam sebuah program
    Property : karakteristik yang dimiliki object
    Method : aksi yang dapat dilakukan oleh object
    Event : kejadian yang dapat dialami oleh object

    Sebagai ilustrasi anda dapat menganggap sebuah mobil sebagai obyek yang memiliki property, method dan event. Perhatikan gambar berikut :
    [​IMG]

    Implementasinya dalam sebuah aplikasi misalnya anda membuat form, maka form tersebut memiliki property, method, dan event. Sebagaimana pemrograman visual lain seperti Lazarus juga bersifat event driven progamming. Artinya anda dapat menyisipkan kode program pada event yang dimiliki suatu obyek.

    See u next time :)
     
    Last edited: Nov 30, 2014
    Kitten likes this.
  3. Adhimedia_cell

    Adhimedia_cell Moderator Moderator

    Messages:
    1,164
    Likes Received:
    66
    Trophy Points:
    58
    Struktur Lazarus

    2 pasang file utama penyusun proyek aplikasi Lazarus, yaitu:
    * File lazarus project information (extension .lpi) berpasangan dengan lazarus project main source (extension .lpr)
    * File lazarus form (extension .lfm) berpasangan dengan lazarus unit source (extension .pas).

    Jika mau membuka sebuah proyek aplikasi lazarus, maka yang harus dibuka adalah lazarus project information (extension .lpi). Setelah terbuka maka secara default lazarus project main source ( .lpr ) tidak ditampilkan karena memang pada umumnya file ini tidak kita edit (kecuali kalau kita menginginkan lain) melainkan isinya akan dibuatkan secara otomatis oleh lazarus. Untuk membuka lazarus project main source ( .lpr ) caranya tekan tombol Ctrl+F2 dan pilih yang berextensi .lpr, maka akan terbuka jendela source editor seperti gambar di bawah:

    [​IMG]

    Seperti SAYA sebutkan di atas, bahwa file .lpr isinya akan dibuatkan secara otomatis oleh Lazarus kecuali kalau kita ada keperluan khusus untuk merubahnya.

    Contoh:
    * Title / Judul: akan secara otomatis berubah mengikuti nama file waktu kita menyimpan,
    * Declaration / Deklarasi: jika menambah form baru misal namanya form2 dengan nama unitnya unit2, maka secara otomatis di bagian deklarasi uses akan menambahkan unit baru yaitu Unit2,
    * Statement / Pernyataan: dan pada bagian pernyataan akan otomatis ditambah pernyataan Aplication.CreateForm(TForm2, Form2);

    Struktur Unit Lazarus
    Tekan tombol Ctrl+F12 buka file dengan extension .pas maka akan terbuka tab source editor seperti gambar di bawah ini:

    [​IMG]

    Perhatikan gambar tersebut di atas, bahwa unit Lazarus terbagi atas 3 bagian utama, yaitu:

    * Bagian Title / Judul Unit.
    * Bagian Interface / Antarmuka.
    * Bagian Implementation / Implementasi.

    1. Title / Judul Unit
    Pada bagian ini akan dibuatkan otomatis judulnya oleh lazarus seperti waktu kita menyimpan unit tersebut.

    2. Interface / Antarmuka Unit
    Pada bagian ini dituliskan deklarasi-deklarasi unit, label, konstanta (const), Type, Variabel (var), sub program (procedure / function).
    Pada umumnya pada bagian ini akan dibuatkan secara otomatis oleh lazarus, kecuali kita menginginkan lain.

    Contoh:
    Kita akan menambahkan komponen button ke form, maka otomatis lazarus akan menambahkan unit dari komponen button tersebut yaitu unit StdCtrls ke bagian uses dan juga akan menambahkan type dari button.
    Selanjutnya jika kita membuat event handler OnClick pada Button maka secara otomatis Lazarus akan mendeklarasikan prosedur OnClick di bagian interface setelah type.

    3. Implementation / Implementasi Unit
    Implementation berisi statement / pernyataan dari potongan-potongan program (procedure atau function) yang telah dideklarasikan pada bagian interface. Disinilah nanti akan dituliskan secara otomatis pernyataan dari procedure OnClick.

    Untuk lebih jelasnya silahkan lihat perbedaan antara gambar source editor unit1 pada gambar di atas dengan source editor unit 1 pada gambar di bawah ini:

    [​IMG]

    Kalau anda sudah melihat perbedaannya, maka tahukan anda bahwa semua itu Lazarus yang menuliskannya untuk anda, jadi anda tidak perlu repot-repot membuatnya, mudah bukan?

    SEE U NEXT TIME :)
     
    Last edited: Dec 2, 2014
    Kitten likes this.
  4. Adhimedia_cell

    Adhimedia_cell Moderator Moderator

    Messages:
    1,164
    Likes Received:
    66
    Trophy Points:
    58
    Cara Penamaan pada Lazarus Free Pascal

    Tata Cara Penamaan berikut ini bisa membantu anda atau orang lain dalam memahami maksud kode-kode program yang telah anda tulis.

    Gunakan 1 atau beberapa karakter awal dari tipe file atau komponen lalu diikuti fungsi dari file / komponen tersebut secara singkat tapi jelas.
    Contoh:
    * Untuk menyimpan unit program kalkulator maka nama filenya simpan dengan ukalkulator.pas
    * Untuk Form program kalkulator berikan nama FKalkulator.
    * Misal dalam form FKalkulator itu ada komponen Button yang berfungsi untuk menjumlah, maka berikan nama BJumlah.
    * Misalkan juga ada komponen LabeledEdit yang berfungsi menampilkan hasilnya, maka berikan nama LEHasil.

    SEE U NEXT TIME :)
     
    Kitten likes this.
  5. Adhimedia_cell

    Adhimedia_cell Moderator Moderator

    Messages:
    1,164
    Likes Received:
    66
    Trophy Points:
    58
    Cara Penulisan Lazarus Free Pascal Secara Umum

    * Setiap akhir dari program atau unit diakhiri dengan end dan tanda titik ( end. )
    Silahkan lihat gambar struktur lazarus di post atas, terlihat bahwa bagian paling akhir dari program atau unit adalah end.

    * Setiap blok pernyataan yang diawali dengan begin harus diakhiri dengan end;
    Perhatikan juga gambar struktur lazarus bagian procedure TForm1.Button1Click, ada pernyataan begin yang berpasangan dengan end;

    * Tanda titik koma ( ; ) merupakan pemisah antar instruksi satu dengan lainnya
    Contoh:
    A := B + C;
    Label2.Caption:='Apakabar';

    * Beberapa statement boleh ditulis menjadi satu baris dipisahkan dengan tanda baca titk koma ( ; )
    A := B + C; Label2.Caption:='Apakabar';

    * Baris komentar diletakkan diantara tanda (* dan *) atau diantara tanda { dan } atau diawali tanda //
    Dalam Lazarus baris komentar akan diberi warna biru (lihat contoh gambar di atas):
    Contoh penerapan yang lain:
    { Ini adalah komentar }
    (* Ini juga komentar *)
    // Aku juga komentar

    SEE U NEXT TIME :)
     
    Kitten likes this.
  6. Adhimedia_cell

    Adhimedia_cell Moderator Moderator

    Messages:
    1,164
    Likes Received:
    66
    Trophy Points:
    58
    Contoh Penulisan Variabel pada Lazarus Free Delphi

    Contoh penulisan variabel yang benar:

    Contoh 1:
    Code:
    var bil1, bil2 : integer; bil3:real;
    Contoh 2:
    Code:
    var bil1 : integer;
        bil2:integer;
        bil3: real;
    Contoh 3:
    Code:
    var
       bil1, bil2: integer;
       bil3: real;
    Ketiga contoh diatas adalah benar semua, tapi untuk memudahkan membacanya sebaiknya menggunakan contoh 3 dalam penulisannya.

    Contoh penulisan variabel yang salah:

    Code:
    var 1bil: integer;  //salah sebab karakter pertama bukan huruf atau garis bawah / underscore ( _ )
    
    var bil 1: integer; //salah sebab menggunakan spasi
    
    var bil-1: integer; //salah sebab menggunakan tanda minus ( - )
    
    var bil1 bil2: integer; //salah sebab tidak menggunakan tanda koma ( , ) untuk pemisah antar variabel
    
    var bil1, bil2: integer  //salah sebab tidak diakhiri tanda titik koma ( ; )
    see u next time :)
     
    Kitten likes this.
  7. Adhimedia_cell

    Adhimedia_cell Moderator Moderator

    Messages:
    1,164
    Likes Received:
    66
    Trophy Points:
    58
    Tipe data standard Lazarus Free Pascal

    Pasangan dari variabel adalah tipe data, karena tipe datalah yang akan menentukan jenis data apa yang akan ditampung oleh sebuah variabel, tipe-tipe data standar Lazarus Free Pascal adalah:

    1. INTEGER
    Integer adalah bilangan bulat, yang terdiri dari bilangan bulat negatif, nol dan bilangan bulat positif dengan jangkauan -2147483648 sampai dengan 2147483647.

    Operator Integer terdiri dari:
    + , - , * , / , DIV dan MOD

    Contoh penggunaan dalam deklarasi variabel:
    Code:
    var
      bil1 : integer;
    2. REAL
    Real adalah bilangan pecahan dengan jangkauan 2.9x10E-39 sampai dengan 17x10E38.

    Operator Real terdiri dari:
    + , - , * dan /

    Contoh penggunaan dalam deklarasi variabel:
    Code:
    var
      bil1 : real;
    3. BOOLEAN
    Tipe data ini hanya mempunyai nilai TRUE atau FALSE

    Operator untuk tipe data ini adalah :
    1. Logical Operator, yaitu : NOT, AND dan OR
    2. Relational Operator, yaitu : >, <, >=, <=, <> dan =

    Contoh penggunaan dalam deklarasi variabel:
    Code:
    var
      bil1 : boolean;
    4. STRING
    Nilai data string merupakan urut-urutan dari karakter yang terletak di antara tanda petik tunggal. Nilai data string akan menenpati memori sebesar banyaknya karakter stringnya ditambah dengan 1 byte. Bila panjang dari suatu string di dalam deklarasi variabel tidak disebutkan, maka panjangnya mengikuti nilai maksimum dari tipe data string. Jangkauan dari tipe data string adalah 0 sampai dengan 2E31 karakter.

    Operator String adalah + {artinya menggabungkan, bukan menjumlah}

    Contoh penggunaan dalam deklarasi variabel:
    Code:
    var
      bil: string[20];
    SEE U NEXT TIME :)
     
    Kitten likes this.
  8. Adhimedia_cell

    Adhimedia_cell Moderator Moderator

    Messages:
    1,164
    Likes Received:
    66
    Trophy Points:
    58
    Lebih Lantjut Tentang Tipe Data String

    Penting diketahui, bahwa semua hasil tampilan di layar adalah berjenis String, baik itu angka maupun huruf, jadi jangan terkejut ketika menjumlahkan 1 + 0 = 10, jika 1 dan 0 bertipe string, yang mana tipe data string tidak dapat dioperasikan secara matematis. Agar permasalahan di atas teratasi maka diperlukan fungsi untuk mengkonfersi jenis data string tersebut.

    Diantaranya yang sering digunakan adalah:

    • strtoint berfungsi mengkonfersi string ke integer.
    • strtofloat berfungsi mengkonfersi string ke real.
    • inttostr berfungsi mengkonfersi integer ke string.
    • floattostr berfungsi mengkonfersi real ke string.

    Ciri jenis data string adalah dia diapit diantara tanda petik tunggal.
    Contoh:
    Code:
    '100.5' //ini adalah jenis data string
    100.5 //ini adalah jenis data real
    Contoh penggunaannya:
    Code:
    strtoint('1005') //diapit diantara tanda petik tunggal
    strtofloat('100.5') //diapit diantara tanda petik tunggal
    inttostr(1005)
    floattostr(100.5)
    SEE U NEX TIME
     
    Last edited: Dec 6, 2014
    Kitten likes this.
  9. Adhimedia_cell

    Adhimedia_cell Moderator Moderator

    Messages:
    1,164
    Likes Received:
    66
    Trophy Points:
    58
    Membuat Program Aplikasi Perkenalan Lazarus

    Caranya klik Project > New Project, kemudian akan tampil jendela Create New Project seperti gambar di bawah ini:

    [​IMG]

    Pilih Application dan klik tombol OK. Setelah itu akan muncul sebuah Form dan Source Editor baru.

    Tahap selanjutnya kita akan menambahkan komponen Label dan Button yang terletak di komponen palet standart.

    [​IMG]

    Komponen Label berfungsi untuk menampilkan teks dalam 1 baris.
    Komponen Button digunakan untuk melakukan eksekusi terhadap suatu proses.

    Caranya menambahkan ke dalam form klik komponen label terus klik di lokasi form, selanjutnya komponen button letakkan di bawah komponen label.

    Ganti properties Caption dan Name milik Form, Label dan Button sebagai berikut:
    Form1
    Caption = Perkenalan Lazarus
    Name = FPerkenalan

    Label1
    Caption = Tekan Tombol Selamat!
    Name = LSelamat

    Button1
    Caption = Selamat
    Name = BSelamat

    Lihat caranya seperti gambar di bawah ini!

    [​IMG]

    Buat desain tampilan formnya seperti gambar di bawah ini:

    [​IMG]

    Sekarang kita akan membuat agar nanti jika tombol BSelamat ditekan maka tulisan Tekan Tombol Selamat! berubah menjadi Selamat Belajar Lazarus Free Pascal!
    Caranya dengan mengisikan event OnClick milik komponen BSelamat.

    Langkah-langkahnya:
    1. Pilih komponen Bselamat.
    2. Klik tab Events pada Object Inspector.
    3. Pilih event OnClick.
    4. Kita dapat mengisikan event-handler dengan dua cara, yaitu dengangan memilih satu event handler dari yang sudah ada, berhubung baru pertama membuat event handler maka pilihan event handler sebelumnya tidak ada. Cara yang kedua klik tombol [...] bisa juga dengan dobelklik pada kolom nilai event tersebut, maka anda akan masuk ke Source Editor, dan Lazarus akan membuatkan kerangka procedure-nya.
    [​IMG]

    Di tempat kursor yang telah ditentukan Lazarus tuliskan pernyataan LSelamat terus diikuti tanda titik ( . ) maka fitur autocomplete akan muncul, cari pernyataan Caption dengan mengetik ca seperti pada contoh di atas lantas pilih Caption lalu enter. Kemudian ketik kalimat 'Selamat Belajar Lazarus Free Pascal!'
    Hasilnya kurang lebih seperti gambar di bawah ini:

    [​IMG]

    Jika sudah selesai semua, sekarang simpan dengan cara klik menu File > Save All
    Buat folder baru dengan nama latihan, dan didalam folder latihan tersebut buat folder baru lagi yang berisi latihan-latihan membuat aplikasi lazarus. Untuk contoh sekarang buat folder perkenalan. Beri program aplikasinya dengan nama perkenalan.lpi dan beri nama unitnya dengan uperkenalan.pas

    Cukup mudah bukan kita tidak perlu dipusingkan dengan urusan membuat tampilan program, kita hanya fokus pada penulisan kode program berupa deklarasi dan pernyataan lewat event yang tersedia. Setelah itu jalankan program dengan menekan tombol F9. Selamat anda telah berhasil membuat program aplikasi pertama anda.

    SEE U NEXT TIME... :)
     
    Last edited: Dec 1, 2014
    alifcell7, Kitten and gbluez like this.
  10. gbluez

    gbluez Administrator Staff Member Administrator

    Messages:
    262
    Likes Received:
    215
    Trophy Points:
    53
    Joss.. mantab sekali. lanjut bos....

    nb.
    nanti post komentar akan di hapus, biar artikel nya enak di baca, full tutorial .
    apresiasi terima kasih bisa melalui klik "LIKE"

    post saya ini nanti juga akan di hapus
     
    alifcell7 likes this.
  11. Adhimedia_cell

    Adhimedia_cell Moderator Moderator

    Messages:
    1,164
    Likes Received:
    66
    Trophy Points:
    58
    Komponen Edit dan LabeledEdit
    • Komponen Edit berfungsi untuk membaca dan menampilkan data masukan dalam 1 baris.
    • Komponen LebeledEdit adalah gabungan antara komponen Label dan Edit yang berfungsi sama dengan komponen Edit.

    Silahkan buka kembali project selamat dengan klik menu Project > Open Project.
    Jika tidak muncul jendela form atau source editor, klik menu Project > Form atau Shift+F12 lalu pilih formnya.

    Di from FSelamat tambahkan lagi:
    • 1 komponen label dan 1 komponen edit yang terletak di komponen palette Standard
    • 1 komponen labelededit yang terletak di palette Additional.

    Isi properti komponen:

    Label1
    Caption: Ganti caption LSelamat:

    Edit1
    Text: {isi text dihapus}
    Name: Egantilabel

    LabeledEdit1
    Caption: Ganti caption FSelamat:
    Text: {isi text dihapus}
    Name: LEgantiform

    Buat desain formnya seperti gambar di bawah ini:

    [​IMG]

    Kita akan membuat agar ketika tombol selamat ditekan akan:
    • Merubah Caption LSelamat sama dengan Text EGantilabel.
    • Caption FSelamat sama dengan Text LEGantiform.
    Untuk itu kita perlu merubah pada event OnClick BSelamat dengan pernyataan berikut:

    Code:
    procedure TFSelamat.(Sender: TObject);
    begin
      LSelamat.Caption:=EGantilabel.Text;
      Fselamat.Caption:=LEGantiform.Text;
    end;
    Jangan lupa Save All untuk menyimpan. Jalankan Aplikasi dengan menekan F9 selanjutnya isi sembarang kalimat di EGantilabel dan LEGantiform, lalu klik tombol Selamat. Perhatikan apa yang terjadi!

    See U Next time :)
     
    DQommedeDQ and Kitten like this.
  12. Adhimedia_cell

    Adhimedia_cell Moderator Moderator

    Messages:
    1,164
    Likes Received:
    66
    Trophy Points:
    58
    Conditional Statement IF / Pernyataan Bersyarat IF

    Statement IF adalah suatu pernyataan bersyarat yang berfungsi untuk mengambil keputusan dari beberapa kondisi. Pernyataan bersyarat IF biasanya digunakan untuk syarat / kondisi yang jumlahnya tidak terlalu banyak.

    1. IF ... THEN ...
    Syntax:

    Code:
    if (syarat) then (perintah);
    atau
    Code:
    if (syarat) then
    begin
      (perintahke-1);
      (perintahke-2);
      (perintahke-n);
    end;
    Contoh kasus 1a:
    Jika nilai siswa kurang dari atau sama dengan 50 maka TIDAK LULUS.

    Maka pernyataannya menjadi:
    Code:
    if nilai <= 50 then label1.Caption:='TIDAK LULUS';
    Contoh kasus 1b:
    Jika nilai siswa kurang dari atau sama dengan 50 maka TIDAK LULUS dan tulisan berwarna merah.

    Maka pernyataannya menjadi:
    Code:
    if nilai <= 50 then
    begin
      label1.Caption:='TIDAK LULUS';
      label1.Font.Color:=clRed;
    end;
    2. IF ... THEN ... ELSE ...
    Syntax:

    Code:
    if (syarat) then
      (perintah1)
    else
      (perintah2);
    atau
    Code:
    if (syarat) then
    begin
      (perintahke_1a);
      (perintahke_1b);
      (perintahke_n);
    end
    else
    begin
      (perintahke_2a);
      (perintahke_2b);
      (perintahke_n);
    end;
    Contoh kasus 2a:
    Jika nilai siswa kurang dari atau sama dengan 50 maka TIDAK LULUS, selain itu LULUS.

    Maka pernyataannya menjadi:
    Code:
    if nilai <= 50 then
      label1.Caption:='TIDAK LULUS'
    else
      label1.Caption:='LULUS';
    Contoh kasus 2b:
    Jika nilai siswa kurang dari atau sama dengan 50 maka TIDAK LULUS dan tulisan berwarna merah, selain itu LULUS dan tulisan berwarna biru;

    Maka pernyataannya menjadi:
    Code:
    if nilai <= 50 then
    begin
      label1.Caption:='TIDAK LULUS';
      label1.Font.Color:=clRed;
    end
    else
    begin
      label1.Caption:='LULUS';
      label1.Font.Color:=clBlue;
    end;
    3. Pernyataan IF bersararang
    Syntax:

    Code:
    if (syarat1) then
      (perintah1)
    else
    if (syarat2) then
      (perintah2)
    else
      (perintah3);
    atau
    Code:
    if (syarat1) then
    begin
      (perintah1a);
      (perintah1b);
      (perintahke-n);
    end
    else
    if (syarat2) then
    begin
      (perintah2a);
      (perintah2b);
      (perintahke_n);
    end
    else
    begin
      (perintah2a);
      (perintah2b);
      (perintahke_n);
    end;
    Contoh kasus :
    • Jika nilai siswa kurang dari atau sama dengan 50 maka Keterangan Nilai Huruf menjadi KURANG.
    • Jika lebih dari 50 dan kurang dari atau sama dengan 80 maka Keterangan Nilai Huruf menjadi CUKUP.
    • Jika lebih dari 80 maka Keterangan Nilai Huruf menjadi BAIK.

    Maka pernyataannya menjadi:
    Code:
    if nilai <= 50 then
      label1.Caption:='KURANG'
    else
    if nilai <= 80 then
      label1.Caption:='CUKUP'
    else
      label1.Caption:='BAIK';
    Contoh kasus:
    • Jika nilai siswa kurang dari atau sama dengan 50 maka Keterangan Nilai Huruf menjadi KURANG dan Nilai Huruf menjadi C.
    • Jika lebih dari 50 dan kurang dari dari atau sama dengan 80 maka Keterangan Nilai Huruf menjadi CUKUP dan Nilai Huruf menjadi B.
    • Jika lebih dari 80 maka Keterangan Nilai Huruf menjadi BAIK dan Nilai Huruf menjadi A.

    Maka pernyataannya menjadi:
    Code:
    if nilai <= 50 then
    begin
      label1.Caption:='KURANG';
      label2.Caption:='C';
    end
    else
    if nilai <= 80 then
    begin
      label1.Caption:='CUKUP';
      label2.Caption:='B';
    end
    else
    begin
      label1.Caption:='BAIK';
      label2.Caption:='A';
    end;
    Banyaknya Statement IF yang mau di tambahkan di dalam pernyataan IF tidak ada batasan, jadi terserah sesuai kebutuhan. Perlu diperhatikan bahwa sebelum ELSE pada statement IF jangan pernah menambahkan titik koma ( ; ). Meskipun dalam Lazarus proses dikerjakan berdasarkan event yang terjadi (event driven programming) tetapi pernyataan-pernyataan yang ada di dalam procedure (event) tetap dikerjakan secara berurutan (sequential).

    SEE U NEXT TIME :)
     
    Last edited: Dec 3, 2014
    DQommedeDQ likes this.
  13. Adhimedia_cell

    Adhimedia_cell Moderator Moderator

    Messages:
    1,164
    Likes Received:
    66
    Trophy Points:
    58
    Conditional Statement CASE / Statement Bersyarat CASE

    Pernyataan Case fungsinya sama dengan Nested If, kelebihannya terletak pada format penulisannya yang lebih ringkas. Pemeriksaan Syarat pada pernyataan Case lebih tepat disebutkan dalam hubungan relasi samadengan ( = ). Dengan demikian bila Syarat bernilai tertentu maka akan dilakukan perintah terkait, bila bernilai lain maka dilakukan perintah yang lain juga, demikian seterusnya.

    Syntax 1:
    Code:
    (syarat) of
      (nilai_1): (perintah_1);
      (nilai_2): (perintah_2);
      ...
      (nilai_n): (perintah_n);
      else
        (perintah_x);
    end;
    Contoh kasus 1:
    • Jika nilai siswa kurang dari atau sama dengan 50 maka Keterangan Nilai Huruf adalah KURANG.
    • Jika lebih dari 50 dan kurang dari atau sama dengan 80 maka Keterangan Nilai Huruf adalah CUKUP.
    • Jika lebih dari 80 maka Keterangan Nilai Huruf pada caption label1 menjadi BAIK.

    Maka pernyataannya menjadi:
    Code:
    case Nilai of
      0 .. 50: Label1.Caption:='KURANG';
      51 .. 80: Label1.Caption:='CUKUP';
      else
        Label1.Caption:='BAIK';
    end;
    Syntax 2 ( dengan begin ... end ):
    Code:
    case (syarat) of
      (nilai_1):
      begin
        (perintah_1a);
        (perintah_1b)'
        dst...;
      end;
      (nilai_2):
      begin
        (perintah_2a);
        (perintah_2b);
        dst...;
      end;
      (nilai_n):
      begin
        (perintah_n);
        dst...;
      end;
      else
      begin
        (perintah_x);
        dst...;
      end;
    end;
    Contoh kasus 2:
    • Jika nilai siswa kurang dari atau sama dengan 50 maka Keterangan Nilai Huruf adalah KURANG dan Nilai Huruf adalah C.
    • Jika lebih dari 50 dan kurang dari dari atau sama dengan 80 maka Keterangan Nilai Huruf adalah CUKUP dan Nilai Huruf adalah B.
    • Jika lebih dari 80 maka Keterangan Nilai Huruf adalah BAIK dan Nilai Huruf adalah A.

    Maka pernyataannya menjadi:
    Code:
    case Nilai of
      0 .. 50:
      begin
        Label1.Caption:='KURANG';
        Label2.Caption:='C';
      end;
      51 .. 80:
      begin
        Label1.Caption:='CUKUP';
        Label2.Caption:='B';
      end;
      else
      begin
        Label1.Caption:='BAIK';
        Label2.Caption:='A';
      end;
    end;
    Sekarang coba bandingkan dengan Penggunaan pada Pernyataan IF! Terus kapan sebaiknya kita menggunakan Statement Case? Gunakan statement Case jika:
    • Tipe data yang digunakan bukan real.
    • Variabel Syarat percabangan hanya satu saja.
    • Hubungan relasi Syarat yang digunakan adalah samadengan ( = )

    SEE U NEXT TIME :)
     
    Last edited: Dec 3, 2014
    DQommedeDQ likes this.
  14. Adhimedia_cell

    Adhimedia_cell Moderator Moderator

    Messages:
    1,164
    Likes Received:
    66
    Trophy Points:
    58
    MEMILIH DATA DENGAN KOMPONEN RADIOBUTTON

    Pada tutorial kali ini kita akan mempelajari beberapa komponen, yaitu komponen RadioButton dan GroupBox.

    KOMPONEN RADIOBUTTON
    Komponen RadioButton terletak di palet Standard, RadioButton akan memberikan pilihan yang bersifat mutually exclusive, artinya hanya sebuah RadioButton yang dapat dipilih pada satu saat. Jika anda memilih sebuah RadioButton, maka RadioButton yang telah dipilih sebelumnya menjadi tidak dipilih. RadioButton dapat dikelompokkan dengan menggunakan GorupBox.

    KOMPONEN GROUPBOX
    Komponen GroupBox berlaku sebagai container, sehingga jika anda memindahkan GroupBox, otomatis semua komponen yang berada didalam GroupBox juga ikut berpindah.

    Untuk mempraktekkan teori-teori di atas mari kita buat program KASIRATK.
    Langkah-langkah membuat tampilan visual:
    1. Beri nama formnya dengan FKasirATK, dan rubah Caption-nya dengan Kasir ATK.
    2. Tambahkan 2 komponen Label dan ubah setiap captionnya dengan Banyak Barang dan Bayar.
    3. Tambahkan 2 komponen Edit. Ubah namanya dengan EBanyak dan EJumlah. Kosongkan properti Text.
    4. Tambahkan sebuah Button beri nama BHitung dan ubah Caption-Nya menjadi Hitung.
    5. Tambahkan komponen GroupBox dan ubah properti Caption-nya menjadi Jenis Barang.
    6. Tambahkan komponen 3 komponen RadioButton ke dalam GroupBox, lalu ubah masing-masing Caption-nya menjadi Spidol, Pulpen dan Pensil. Ubah juga namanya masing-masing menjadi RBSpidol, RBPulpen dan RBPensil. (Ingat anda harus menempatkan RadioButton di dalam GroupBox, jangan di luarnya).
    7. Dari ketiga RadioButton tidak ada satu pun yang dipilih. Pada saat aplikasi dijalankan, anda harus memilih salah satu, anda dapat membuat pilihan default, misalnya Spidol (RBSpidol dipilih secara default). Untuk itu anda harus mengubah properti Checked dari RBSpidol menjadi True, perhatikan perubahan pada form.
    8. Jika sudah selesai semua tekan File > Save All, beri nama proyeknya dengan kasiratk.lpi dan beri nama unitnya dengan ukasiratk.pas
    Buat tampilan visualnya seperti gambar di bawah ini:
    [​IMG]

    Penulisan Pada Source Editor:
    Event OnClick komponen BHitung
    Langkah selanjutnya kita akan mengisikan event OnClick milik BHitung yang berfungsi menghitung perkalian antara EBanyak dan EJumlah. Caranya klik even OnClick milik BHitung seperti gambar di atas, maka selanjutnya anda akan dibawa ke jendela Source Editor. Isikan pada procedure tersebut seperti di bawah ini:

    Code:
    procedure TFKasirATK.BHitungClick(Sender: TObject);
    var
      harga, banyak, bayar: integer;
    begin
      banyak:= strtoint(EBanyak.Text);
      if RBSpidol.Checked then harga:= 5000;
      if RBPulpen.Checked then harga:= 3000;
      if RBPensil.Checked then harga:= 1000;
      bayar:= banyak*harga;
      EJumlah.Text:= inttostr(bayar);
    end;
    Disini kita memakai pernyataan IF. Jika RBSPidol dipilih ( RBSpidol.Checked bernilai true ), harganya 5000, dan seterusnya.

    Source code lengkap dari ukasiratk.pas sebagai berikut:
    Code:
    unit ukasiratk;
    
    {$mode objfpc}{$H+}
    
    interface
    
    uses
      Classes, SysUtils, FileUtil, Forms, Controls, Graphics, StdCtrls;
    
    type
    
      { TFKasirATK }
    
      TFKasirATK = class(TForm)
      BHitung: TButton;
      EBanyak: TEdit;
      EJumlah: TEdit;
      GroupBox1: TGroupBox;
      Label1: TLabel;
      Label2: TLabel;
      RBSpidol: TRadioButton;
      RBPulpen: TRadioButton;
      RBPensil: TRadioButton;
      procedure BHitungClick(Sender: TObject);
      private
      { private declarations }
      public
      { public declarations }
      end;
    
    var
      FKasirATK: TFKasirATK;
    
    implementation
    
    {$R *.lfm}
    
    { TFKasirATK }
    
    procedure TFKasirATK.BHitungClick(Sender: TObject);
    var
      harga, banyak, bayar: integer;
    begin
      banyak:= strtoint(EBanyak.Text);
      if RBSpidol.Checked then harga:= 5000;
      if RBPulpen.Checked then harga:= 3000;
      if RBPensil.Checked then harga:= 1000;
      bayar:= banyak*harga;
      EJumlah.Text:= inttostr(bayar);
    end;
    
    end.

    Jangan lupa simpan, dan compile / jalankan dengan F9.

    SEE U NEXT TIME :)
     
    Last edited: Dec 7, 2014
  15. Adhimedia_cell

    Adhimedia_cell Moderator Moderator

    Messages:
    1,164
    Likes Received:
    66
    Trophy Points:
    58
    Cara Penggunaan ShowMessage

    ShowMessage merupakan procedure yang telah didefinisikan oleh lazarus yang berfungsi untuk menampilkan pesan. Ciri-cirinya dia akan menggunakan nama aplikasi sebagai Captionnya dan di dalam kotak pesannya terdapat tombol OK.

    Syntax:
    Code:
    ShowMessage('Isi Pesan');
    Contoh:
    Code:
    ShowMessage('Isikan Banyak Barang');
    Contoh tampilannya seperti gambar di bawah ini:

    [​IMG]

    SEE U NEXT TIME
     
    DQommedeDQ likes this.
  16. Adhimedia_cell

    Adhimedia_cell Moderator Moderator

    Messages:
    1,164
    Likes Received:
    66
    Trophy Points:
    58
    Memilih Data Dengan Komponen RadioGroup

    Kali ini kita akan belajar tentang penggunaan komponen RadioGroup dan Statement / Pernyataan CASE.

    KOMPONEN RADIOGROUP
    RadioGroup adalah gabungan dari komponen RadioButton dan komponen GroupBox, fungsinya sama dengan komponen RadioButton.

    Untuk tutorial kali ini silahkan buka kembali proyek aplikasi kasiratk yang telah anda buat sebelumnya. Setelah program aplikasi kasiratk terbuka, ikuti langkah-langkah di bawah ini:

    PENAMBAHAN KOMPONEN & MERUBAH PROPERTIES :
    • Ubah aplikasi yang memakai RadioButton dengan RadioGroup, caranya dengan klik GroupBox, lalu tekan tombol Delete, maka ketiga komponen RadioButton didalamnya akan ikut terhapus.
    • Tempatkan komponen RadioGroup di tempat GroupBox. Ubah Name menjadi RGBarang dan Caption-nya menjadi Nama Barang.
    • Klik tombol [,,,] pada Properties Items milik komponen RGBarang, maka anda akan masuk ke Strings Editor Dialog dan isikan Spidol, Pulpen dan Pensil dalam tiga baris, kemudian klik OK.
    [​IMG]

    • Sekarang tampilan pilihan RadioGroup masih vertikal (1 kolom), agar menjadi horisontal maka rubah properti Coloms milik RGBarang menjadi 3 (sesuai jumlah jenis barang).
    • Selanjutnya kita akan membuat pilihan pertama sebagai pilihan default. Pilihan pada RadioGroup dalam hal ini RGBarang dimulai dengan nilai 0. Coba anda lihat properti ItemIndex, isinya adalah -1 yang artinya tidak ada pilihan default. Ubahlah nilai tersebut menjadi 0 maka yang menjadi pilihan default adalah Spidol.
    TAMPILAN DESAIN VISUAL:
    [​IMG]


    MERUBAH EVENTS:
    Selanjutnya kita akan mengubah event OnClick milik komponen BHitung, sehingga menjadi:
    Code:
    procedure TFKasirATK.BHitungClick(Sender: TObject);
    var
      harga, banyak, bayar: integer;
    begin
      banyak:= strtoint(EBanyak.Text);
      case RGBarang.ItemIndex of
        0 : harga:= 5000;
        1 : harga:= 3000;
        2 : harga:= 1000;
      end;
      bayar:= banyak*harga;
      EJumlah.Text:= inttostr(bayar);
    end;
    Source code lengkap ukasiratk.pas sebagai berikut:
    Code:
    unit ukasiratk;
    
    {$mode objfpc}{$H+}
    
    interface
    
    uses
      Classes, SysUtils, FileUtil, Forms, Controls, Graphics, StdCtrls,
      ExtCtrls;
    
    type
    
      { TFKasirATK }
    
      TFKasirATK = class(TForm)
        BHitung: TButton;
        EBanyak: TEdit;
        EJumlah: TEdit;
        Label1: TLabel;
        Label2: TLabel;
        RGBarang: TRadioGroup;
        procedure BHitungClick(Sender: TObject);
      private
        { private declarations }
      public
        { public declarations }
      end;
    
    var
      FKasirATK: TFKasirATK;
    
    implementation
    
    {$R *.lfm}
    
    { TFKasirATK }
    
    procedure TFKasirATK.BHitungClick(Sender: TObject);
    var
      harga, banyak, bayar: integer;
    begin
      banyak:= strtoint(EBanyak.Text);
      case RGBarang.ItemIndex of
        0 : harga:= 5000;
        1 : harga:= 3000;
        2 : harga:= 1000;
      end;
      bayar:= banyak*harga;
      EJumlah.Text:= inttostr(bayar);
    end;
    
    end.

    Sekarang simpan dan compile / jalankan aplikasinya. Hasilnya akan sama dengan tutorial Penggunaan Komponen RadioButton sebelumnya. Silahkan amati perbedaannya terutama dalam penggunaan komponen dan statement IF dan CASE.

    Sebagai catatan, nilai ItemIndex bertipe integer, sehingga pernyataan CASE dapat digunakan. Hal yang terpenting lagi bahwa, urut-urutan index pada Lazarus adalah dimulai dari 0, bukan 1.

    SEE U NEXT TIME :)
     
    DQommedeDQ likes this.
  17. Adhimedia_cell

    Adhimedia_cell Moderator Moderator

    Messages:
    1,164
    Likes Received:
    66
    Trophy Points:
    58
    PROGRAM KODE ASCII KEYBOARD

    Untuk membuat program kode ascii dari tombol keyboard yang kita tekan, kita perlu memahami event OnKeyDown dan OnKeyPress. Kedua event ini memang sama-sama dikirim saat tombol keyboard ditekan. Yang membedakan keduanya adalah jenis tombol yang ditekan.

    Event OnKeyDown dikirim saat sembarang tombol keyboard ditekan. Event OnKeyPress dikirim saat tombol keyboard yang mempunyai tampilan di layar (karakter ASCII) dikirim. Sebagai contoh, bila anda menekan tombol ( F1 ), Sistem operasi (Windows, Linux, dsb) hanya akan mengirim event OnKeyDown. Namun bila anda menekan tombol ( A ), Sistem operasi akan mengirim evemt OnKeyDown dan juga OnKeyPress.

    Untuk lebih jelasnya mari kita buat program Kode Ascii Keyboard Lazarus Free Pascal. Dengan program ini anda bisa mencoba-coba tombol mana yang akan menghasilkan event OnKeyPress dan tombol mana yang menghasilkan kedua event tersebut.

    Langkah Desain Visual:
    Buat 7 buah label pada form.

    Label1:
    Caption: Hasil OnKeyDown:

    Label2:
    Caption: Hasil OnKeyPress:

    Label3:
    Caption: Hasil Gabungan

    Label4:
    Caption: Hasil Gabungan Adalah Yang Benar!
    Font colour: clRed
    Font size: 11
    Font style fsBold: True

    Label5:
    Caption: LKeydown
    Name: LKeydown

    Label6:
    Caption: LKeypress
    Name: LKeypress

    Label7:
    Caption: LGabungan
    Name: LGabungan

    Form1:
    Name: FKodeAscii
    Caption: Program Kode Ascii

    Langkah Non Visual / Coding:
    FKodeAscii:
    Event OnKeyDown:

    Code:
      LGabungan.Caption:=inttostr(key);
      LKeydown.Caption:=inttostr(key);
    Event OnKeyPress:
    Code:
      LGabungan.Caption:=inttostr(ord(key));
      LKeypress.Caption:=inttostr(ord(key));
    Kalau sudah selesai semua maka tampilan visualnya kurang lebih seperti gambar di bawah ini:

    [​IMG]

    Simpan pada folder kodeascii dan beri nama kodeascii.lpi dan ukodeascii.pas

    Sedangkan source code lengkap ukodeascii.pas seperti di bawah ini:

    Code:
    unit ukodeascii;
    
    {$mode objfpc}{$H+}
    
    interface
    
    uses
    Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
    
    type
    
    { TFKodeAscii }
    
    TFKodeAscii = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    LKeyPress: TLabel;
    LKeyDown: TLabel;
    LGabungan: TLabel;
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure FormKeyPress(Sender: TObject; var Key: char);
    private
    { private declarations }
    public
    { public declarations }
    end;
    
    var
    FKodeAscii: TFKodeAscii;
    
    implementation
    
    {$R *.lfm}
    
    { TFKodeAscii }
    
    
    procedure TFKodeAscii.FormKeyDown(Sender: TObject; var Key: Word;
    Shift: TShiftState);
    begin
    LGabungan.Caption:=inttostr(key);
    LKeydown.Caption:=inttostr(key)
    end;
    
    procedure TFKodeAscii.FormKeyPress(Sender: TObject; var Key: char);
    begin
    LGabungan.Caption:=inttostr(ord(key));
    LKeypress.Caption:=inttostr(ord(key));
    end;
    
    end.

    Pada program di atas ada fungsi baru yang belum pernah kita pelajari yaitu fungsi ORD.
    Fungsi Ord adalah mengembalikan nilai ASCII dari sebuah karakter.

    Syntax:
    Code:
    ord(karakter);
    Contoh:
    Code:
    ord('A'); //maka hasilnya adalah adalah 64
    Okay, silahkan dipraktekkan, simpan dan compile, see u next time :)
     
  18. Adhimedia_cell

    Adhimedia_cell Moderator Moderator

    Messages:
    1,164
    Likes Received:
    66
    Trophy Points:
    58
    FUNGSI MEMPELAJARI KODE ASCII

    Fungsinya kita mempelajari KODE ASCII diatas diantaranya adalah:
    1. Untuk memvalidasi data yang masuk pada sebuah komponen.
    2. Menggantikan fungsi sebuah tombol, dan diantara karakter yang paling terkenal adalah kode ascii dari tombol ENTER yaitu 13, nanti anda akan sering menggunakannya.

    Setelah ini nanti kita akan praktek penggunaannya.

    SEE U NEXT TIME :)
     
    DQommedeDQ likes this.
  19. Adhimedia_cell

    Adhimedia_cell Moderator Moderator

    Messages:
    1,164
    Likes Received:
    66
    Trophy Points:
    58
    Validasi Data dengan Penanganan Kesalahan

    Pada postingan kali ini kita akan mempraktekkan penggunaan dari ShowMessage dan kode ASCII sebelumnya. Sebagai programmer kita menginginkan agar pemakai aplikasi buatan kita dijalankan dengan benar, misal disuruh input angka maka yang diinputkan juga angka, inputan tanggal diisi tanggal, dst. Ada kalanya apa yang kita inginkan sebagai programmer tidak dilakukan oleh pemakai program kita, baik itu karena unsur sengaja maupun tidak sengaja. Bisa juga kesalahan data itu dari hasil program kita sendiri.

    Sebagai bahan praktek validasi data kali ini silahkan buka kembali proyek aplikasi kasiratk.lpi

    [​IMG]

    Silahkan compile (tekan F9) lalu coba masukkan pada kotak EBanyak barang dengan angka pecahan misalnya 5.5 , terus tekan tombol hitung. Perhatikan apa yang terjadi! Akan muncul pesan error.

    Gambar error pertama di bawah ini adalah pesan error yang dihasilkan oleh IDE Lazarus Free Pascal.

    [​IMG]

    Sedangkan error kedua di bawah ini adalah yang dihasilkan oleh Program Kasiratk. (Jika program dijalankan diluar IDE Lazarus maka yang muncul hanya gambar error di bawah ini saja)
    [​IMG]

    Pesan error tersebut menyebutkan:
    "5.5" is an invalid integer.

    Coba ingat-ingat tipe data apa yang kita gunakan untuk harga, banyak, dan bayar pada program kasiratk? Tipe datanya integer kan. Sedangkan 5.5 adalah merupakan tipe data real.

    Untuk error yang kemungkinan bisa timbul pada sebuah program maka perlu dilakukan pengecekan validasi / keabsahan data dengan melakukan penanganan kesalahan / error handling yang mungkin bisa timbul.

    Untuk program kasihatk ini pengecekan validasi / keabsahan meliputi:

    1. Mencegah pengguna agar hanya bisa mengetikkan angka saja pada kotak EBanyak. Sebab jika huruf yang diisikan pada kotak EBanyak maka akan error karena huruf bukan tipe data integer yang valid.

    Untuk validasi ini kita perlu membuat event OnKeyPress pada komponen EBanyak seperti di bawah ini:

    Code:
     procedure TFKasirATK.EBanyakKeyPress(Sender: TObject; var Key: char);
    begin
      if not (key in['0'..'9',#8]) then
      Key:=#0;
    end;
    2. Jika kotak edit masih kosong atau berisi 0 maka transaksi digagalkan. Sebab jika kotak edit masih kosong maka akan muncul error karena data kosong bukan merupakan data integer yang valid. Walau kotak EBanyak berisi angka 0 yang merupakan nilai integer yang valid tapi kita gagalkan juga transaksinya sebab secara logika kalau berisi 0 maka tidak ada barang yang dibeli.

    Untuk validasi ini kita perlu merubah isi event OnClick milik komponen BHitung seperti di bawah ini:

    Code:
     procedure TFKasirATK.BHitungClick(Sender: TObject);
    var
      harga, banyak, bayar: integer;
    begin
      if (EBanyak.Text='') or (EBanyak.Text='0') then
        ShowMessage('Isikan banyak barang!')
      else
      begin
        banyak:= strtoint(EBanyak.Text);
        case RGBarang.ItemIndex of
          0 : harga:= 5000;
          1 : harga:= 3000;
          2 : harga:= 1000;
        end;
        bayar:= banyak*harga;
        EJumlah.Text:= inttostr(bayar);
      end; 
    end;
    Sekarang simpan dan compile / jalankan dengan menekan F9. Lihat apa yang terjadi. pada kotak edit EBanyak selain angka tidak dapat diketikkan dan jika EBanyak masih kosong atau berisi 0 maka akan muncul kotak pesan "Isikan banyak barang!".

    Source Code lengkap dari ukasiratk.pas sebagai berikut:

    Code:
    unit ukasiratk;
    
    {$mode objfpc}{$H+}
    
    interface
    
    uses
      Classes, SysUtils, FileUtil, Forms, Controls, Graphics, StdCtrls,
      Dialogs, ExtCtrls;
    
    type
    
      { TFKasirATK }
    
      TFKasirATK = class(TForm)
      BHitung: TButton;
      EBanyak: TEdit;
      EJumlah: TEdit;
      Label1: TLabel;
      Label2: TLabel;
      RGBarang: TRadioGroup;
      procedure BHitungClick(Sender: TObject);
      procedure EBanyakKeyPress(Sender: TObject; var Key: char);
      private
      { private declarations }
      public
      { public declarations }
      end;
    
    var
      FKasirATK: TFKasirATK;
    
    implementation
    
    {$R *.lfm}
    
    { TFKasirATK }
    
    procedure TFKasirATK.BHitungClick(Sender: TObject);
    var
      harga, banyak, bayar: integer;
    begin
      if (EBanyak.Text='') or (EBanyak.Text='0') then
      ShowMessage('Isikan banyak barang!')
      else
      begin
      banyak:= strtoint(EBanyak.Text);
      case RGBarang.ItemIndex of
      0 : harga:= 5000;
      1 : harga:= 3000;
      2 : harga:= 1000;
      end;
      bayar:= banyak*harga;
      EJumlah.Text:= inttostr(bayar);
      end;
    end;
    
    procedure TFKasirATK.EBanyakKeyPress(Sender: TObject; var Key: char);
    begin
      if not (key in['0'..'9',#8]) then
      Key:=#0;
    end;
    
    end.

    Penjelasan lebih lanjut tentang Validasi Data ini akan dijelaskan lagi nanti. SEE U NEXT TIME. :)
     
  20. Adhimedia_cell

    Adhimedia_cell Moderator Moderator

    Messages:
    1,164
    Likes Received:
    66
    Trophy Points:
    58
    Mari kita bahas lebih lanjut tengtang Validasi Data pada program kasiratk diatas.

    Prosedur di bawah ini yang mungkin kurang anda pahami.

    Code:
    procedure TFKasirATK.EBanyakKeyPress(Sender: TObject; var Key: char);
    begin
      if not (key in['0'..'9',#8]) then
      Key:=#0;
    end;
    Pernyataan:
    Code:
    if not (key in['0'..'9',#8]) then
    Key:=#0;
    Artinya:
    Jika tidak tombol keyboard yang ditekan termasuk dalam 0 sampai dengan 9, tombol backspace lalu tombol keyboard yang ditekan dianggap NULL (tidak tidak ada).

    if : jika
    not : tidak
    key : tombol keyboard yang ditekan
    in : termasuk dalam
    '0' : 0
    .. : sampai dengan
    '9' : 9
    #8 : kode ascii dari backspace //coba jalankan progam kode ascii untuk memahaminya
    then : lalu
    := : dianggap // := merupakan operator penugasan
    #0 : karakter NULL

    Mengapa harus memakai tanda # pada kode ASCII dari backspace ( #8 )?
    Silahkan baca pada deklarasi prosedurnya seperti dibawah ini:
    Code:
    procedure TFKasirATK.EBanyakKeyPress(Sender: TObject; var Key: char);
    Code:
    var Key: char
    Variabel dari Key adalah char, variable char sama dengan variabel string, hanya saja variabel char panjangnya hanya 1 karakter saja. Karena kode ascii dari backspace yaitu angka 8 dalah bertipe integer maka untuk merubahnya menjadi type char perlu ditambahkan karakter pagar ( # ).

    SEE U NEXT TIME :)
     
    Last edited: Dec 24, 2014
    DQommedeDQ likes this.

Share This Page