Belajar Lazarus Free Delphi

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

  1. Adhimedia_cell

    Adhimedia_cell Well-Known Member

    Messages:
    1,158
    Likes Received:
    67
    Trophy Points:
    58
    PENGGUNAAN FUNGSI MESSAGEDLG

    MessageDlg berfungsi menampilkan pesan di tengah layar, kelebihan funsi MessageDlg dibandingkan dengan ShowMessage yang telah kita pelajari sebelumnya adalah kita bisa menentukan sendiri Caption dari kotak pesan, menentukan tipe gambar dan tipe tombol yang digunakan.

    Syntax Penggunaan MessageDlg Lazarus Free Pascal:
    Code:
    MessageDlg('Isi Caption','Isi Pesan',Tipe Gambar,Tipe Tombol,0)
    Contoh:
    Code:
    MessageDlg('Peringatan','Isikan banyak barang!',mtWarning,[mbOk],0)
    Maka tampilannya akan seperti gambar di bawah ini:

    [​IMG]

    Jenis-jenis Tipe Gambar:
    • mtWarning : Tanda seru berwarna kuning.
    • mtError : Tanda silang warna merah.
    • mtInformation : Huruf i warna biru.
    • mtConfirmation : Tanda tanya warna biru.
    • mtCustom : Tidak ada gambar.

    Jenis-jenis Tipe Tombol:
    • mbYes : Tombol dengan tulisan 'Yes'.
    • mbNo : Tombol dengan tulisan 'No'.
    • mbOK : Tombol dengan tulisan 'OK'.
    • mbCancel : Tombol dengan tulisan 'Cancel'.
    • mbAbort : Tombol dengan tulisan 'Abort'.
    • mbRetry : Tombol dengan tulisan 'Retry'.
    • mbIgnore : Tombol dengan tulisan 'Ignore'.
    • mbAll : Tombol dengan tulisan 'All'.
    • mbNoToAll : Tombol dengan tulisan 'No to All'.
    • mbYesToAll : Tombol dengan tulisan 'Yes to All'.
    • mbHelp : Tombol dengan tulisan 'Help'.


    Catatan penting:
    Tipe Tombol berjenis set, jadi bisa diisi lebih dari 1, misal diisi tombol Ok dan Cancel.

    Contoh:
    Code:
    MessageDlg('Peringatan','Isikan banyak barang!',mtConfirmation,[mbOk,mbCancel],0)
    Maka tampilannya akan seperti gambar di bawah ini:

    [​IMG]

    MessageDlg menghasilkan nilai dari tombol yang dipilih yang disebut dengan Modal Result. Untuk tutorial tentang Modal Result yang dimiliki oleh tombol akan kita bahas nanti. See u next time... :)
     
  2. Adhimedia_cell

    Adhimedia_cell Well-Known Member

    Messages:
    1,158
    Likes Received:
    67
    Trophy Points:
    58
    Modal Result Pada Tombol Dialog Pesan

    Menambahkan sedikit tentang penulisan tipe tombol, di Lazarus Free Pascal juga telah didefinisikan konstanta tombol gabungan, yaitu:
    • mbYesNoCancel = [mbYes, mbNo, mbCancel]
    • mbOKCancel = [mbOK, mbCancel]
    • mbAbortRetryIgnore = [mbAbort, mbRetry, mbIgnore]

    Jadi jika pada contoh sebelumnya kita menuliskan pernyataan:
    Code:
    MessageDlg('Peringatan','Isikan banyak barang!',mtConfirmation,[mbOk,mbCancel],0)
    Maka hasilnya akan sama dengan jika kita menuliskan pernyataan:
    Code:
    MessageDlg('Peringatan','Isikan banyak barang!',mtConfirmation,mbOkCancel,0)
    Apakah Modal Result?
    Modal result adalah nilai kembalian dari suatu tombol yang kita tekan. Contohnya jika kita menekan tombol yang mempunyai modal result mrYes, maka dia akan menghasilkan modal result mrYes jika ditekan.

    Sekarang mari kita lanjutkan ke jenis-jenis modal resultnya:
    • mbNone = mrNone = 0;
    • mbOk = mrOk = 1;
    • mbCancel = mrCancel = 2;
    • mbAbort = mrAbort = 3;
    • mbRetry = mrRetry = 4;
    • mbIgnore = mrIgnore = 5;
    • mbYes = mrYes = 6;
    • mbNo = mrNo = 7;
    • mbAll = mrAll = 8;
    • mbNoToAll = mrNoToAll = 9;
    • mbYesToAll = mrYesToAll = 10;
    • mbClose = mrClose = 11;

    Saya tuliskan singkat dengan sama dengan ( = ), kalau ditulis detail mbNone = mrNone = 0; maksudnya mbNone modal resultnya adalah mrNone yang bernilai konstanta integer 0;

    Ok silahkan dipahami dulu, kita lanjut lebih detail lagi nanti... :)
     
    Last edited: Dec 22, 2014
  3. Adhimedia_cell

    Adhimedia_cell Well-Known Member

    Messages:
    1,158
    Likes Received:
    67
    Trophy Points:
    58
    JENIS-JENIS PERULANGAN PADA LAZARUS

    Terdapat tiga jenis perulangan, yaitu perulangan FOR, perulangan WHILE dan perulangan REPEAT. Perulangan ini berguna jika kita ingin menjalankan suatu pernyataan secara berulangkali berdasarkan syarat yang telah ditentukan.

    Yang perlu diperhatikan dalam penggunaan fungsi perulangan adalah:
    • Tipe data dari variabel adalah Integer.
    • Kita harus memberikan nilai awal dari variabel.
    • Kita harus menentukan syarat perulangan.

    1. PERULANGAN FOR
    Syntax:

    Code:
    FOR (variabel_kontrol) := (nilai_awal) TO (nilai_akhir) DO
    Begin
      ...(isi_perulangan);
    End;
    Perbedaan dengan perulangan yang lain:
    • Banyak perulangan yang jelas jumlahnya berapa kali.
    • Syarat perulangan dicek didepan.
    • Minimal dijalankan 1 kali.

    2. PERULANGAN WHILE
    Syntax:

    Code:
    WHILE (syarat_perulangan) DO
    Begin
      ...(isi_perulangan);
    End;
    Perbedaan dengan perulangan yang lain:
    • Jumlah perulangan tidak jelas diulang berapa kali.
    • Syarat perulangan dicek didepan.
    • Minimal dijalankan 0 kali.
    3. PERULANGAN REPEAT
    Syntax:

    Code:
    REPEAT
      ...(isi_perulangan);
    UNTIL (syarat_berhenti);
    Perbedaan dengan perulangan yang lain:
    • Jumlah perulangan tidak jelas diulang berapa kali.
    • Syarat perulangan dicek akhir.
    • Minimal dijalankan 1 kali.
    Mengenai cara penggunaannya kita lanjut nanti, see u nex time :)
     
  4. Adhimedia_cell

    Adhimedia_cell Well-Known Member

    Messages:
    1,158
    Likes Received:
    67
    Trophy Points:
    58
    PENGGUNAAN PERULANGAN FOR

    Jenis Perulangan For:

    1. FOR ... TO ... DO
    Perulangan for to do adalah perulangan dari nilai kecil ke besar.

    Syntax:
    Code:
    FOR (variabel_kontrol) := (nilai_awal) TO (nilai_akhir) DO
    Begin
      ...(isi_perulangan);
    End;
    2. FOR ... DOWNTO ... DO
    Perulangan for downto do adalah perulangan dari nilai besar ke kecil.

    Syntax:
    Code:
    FOR (variabel_kontrol) := (nilai_awal) DOWNTO (nilai_akhir) DO
    Begin
      ...(isi_perulangan);
    End;
    CONTOH PENGGUNAAN
    Buatlah proyek aplikasi baru dan dalam Form tambahkan komponen edit dan button sehingga nanti akan terdapat 1 form dengan nama Form1, 1 edit dengan nama Edit1 dan 1 button dengan nama Button

    1. Buat event OnClick pada Button1:

    2. Untuk perulangan FOR ... TO ... DO pernyataannya seperti ini:
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
    begin
      for i := 1 to 5 do
        edit1.SelText := inttostr(i);
    end;
    Bila Program tesebut dijalankan maka nilai i akan ditampilkan pada edit1 dengan hasil 12345, seperti gambar di bawah ini.

    [​IMG]

    3. Untuk perulangan FOR ... DOWNTO ... DO pernyataannya seperti ini:
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
    begin
      for i := 5 downto 1 do
        edit1.SelText := inttostr(i);
    end;
    Bila Program tesebut dijalankan maka nilai i akan ditampilkan pada edit1 dengan hasil 54321, seperti gambar di bawah ini.

    [​IMG]

    Perbedaan antara TO dan DOWNTO terletak pada nilai awal dan nilai akhir. Pada TO nilai awal lebih kecil dari nilai akhir, sedangkan pada DOWNTO nilai awal lebih besar dari nilai akhir.

    SEE U NEXT TIME :)
     
  5. Adhimedia_cell

    Adhimedia_cell Well-Known Member

    Messages:
    1,158
    Likes Received:
    67
    Trophy Points:
    58
    CONTOH REPEAT ... UNTIL, WHILE ... DO = FOR ... TO ... DO

    Mari kita buat aplikasi yang hasilnya akan sama dengan contoh penggunaan perulangan FOR ... TO ... DO seperti pada contoh sebelumnya. Hasilnya akan seperti gambar di bawah ini:

    [​IMG]

    Perulangan Repeat ... Until dan While ... Do mempunyai fungsi yang sama dengan perulangan For yaitu mengulang perintah yang diberikan dengan syarat tertentu. Perbedaan yang utama Perulangan Repeat-Until While-Do dengan perulangan For adalah tidak ada penambahan secara otomatis seperti pada perulangan For, untuk itu perlu menggunakan prosedur INC:

    Prosedur INC
    Prosedur INC berfungsi untuk menambah nilai variabel

    Syntax:
    INC(variabel) //menambah nilai kelipatan 1.
    atau
    INC(variabel,kelipatan_n) //menambah nilai kelipatan n

    Contoh:
    inc(i); //akan menambah nilai variabel i dengan kelipatan 1
    inc(i,4); //akan menambah nilai variabel i dengan kelipatan 4

    1. Perulangan REPEAT ... UNTIL
    Perulangan Repeat ... Until adalah perulangan yang akan berhenti ketika kondisi / syarat terpenuhi.

    Syntax:
    Code:
    REPEAT
      ...(isi_perulangan);
    UNTIL (syarat);
    Contoh:
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
    begin
      i:=1;  //variabel i harus diberi nilai awal agar tidak berisi nilai acak.
      repeat
        edit1.SelText := inttostr(i);
        inc(i);
      until i>5;
    end;
    2. Perulangan WHILE ... DO
    Perulangan While ... Do adalah perulangan yang akan terus dikerjakan selama kondisi / syarat masih terpenuhi.

    Syntax:
    Code:
    WHILE (syarat) DO
    Begin
      ...(isi_perulangan);
    End;
    Contoh:
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
    begin
      i:=1;  //variabel i harus diberi nilai awal agar tidak berisi nilai acak.
      while i < 6 do
      begin
        edit1.SelText := inttostr(i);
        inc(i);
      end;
    end; 
    Kedua contoh diatas hasilnya akan sama dengan perulangan FOR ... TO ... DO seperti pada contoh sebelumnya.

    Ok, HAPPY NEW YEAR 2015 :)
     
  6. Adhimedia_cell

    Adhimedia_cell Well-Known Member

    Messages:
    1,158
    Likes Received:
    67
    Trophy Points:
    58
    CONTOH REPEAT ... UNTIL, WHILE ... DO = FOR ... DOWNTO ... DO

    Mari kita buat aplikasi yang hasilnya akan sama dengan contoh penggunaan perulangan FOR ... DOWNTO ... DO seperti pada contoh sebelumnya. Hasilnya akan seperti gambar di bawah ini:

    [​IMG]

    Perulangan Repeat-Until While-Do tidak dapat mengurangi secara otomatis seperti pada perulangan For Downto , untuk itu perlu menggunakan prosedur DEC:

    Prosedur DEC

    Prosedur DEC berfungsi untuk mengurangi nilai variabel

    Syntax:
    DEC(variabel) //mengurangi nilai kelipatan 1
    atau
    DEC(variabel,kelipatan_n) //mengurangi nilai kelipatan n

    Contoh:
    dec(i); //akan mengurangi nilai variabel i dengan kelipatan 1
    dec(i,5); //akan mengurangi nilai variabel i dengan kelipatan 5

    1. Contoh REPEAT ... UNTIL
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
    begin
      i:=5;  //variabel i harus diberi nilai awal agar tidak berisi nilai acak.
      repeat
        edit1.SelText := inttostr(i);
        dec(i);
      until i<1;
    end;
    2. Contoh WHILE ... DO
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
    begin
      i:= 5; //variabel i harus diberi nilai awal agar tidak berisi nilai acak.
      while i > 0 do
      begin
        edit1.SelText := inttostr(i);
        dec(i);
      end;
    end;

    Contoh 1 dan contoh 2 hasilnya akan sama dengan perulangan FOR ... DOWNTO ... DO seperti pada contoh sebelumnya.

    SEE U NEXT TIME :)
     
  7. Adhimedia_cell

    Adhimedia_cell Well-Known Member

    Messages:
    1,158
    Likes Received:
    67
    Trophy Points:
    58
    Penggunaan Komponen ListBox
    Komponen ListBox menampilkan sekumpulan pilihan dalam daftar yang dapat menggulung. Item-item dalam ListBox dapat dipilih, ditambah dan dihapus.

    Pada tutorial kali ini kita akan mempraktekkan penggunaan MessageDlg dan modal resultnya, serta penggunaan perulangan For. Silahkan dipelajari dulu jika belum memahaminya.Untuk praktek silahkan buat aplikasi baru dan beri nama listbox.lpi

    LANGKAH DESAIN VISUAL


    Form1
    Name: FListbox
    Caption: Depot Enak Sekali

    Label1
    Caption: Daftar Menu

    Label2
    Caption: Menu yang dipilih

    ListBox1
    Name: LBDaftarmenu
    MultiSelect: True
    Items:
    Nasi Putih
    Nasi Rawon
    Nasi Soto
    Tempe Goreng
    Ikan Goreng
    Ikan Pepes
    Sate
    Ayam Goreng
    Ayam Panggang
    Es Jeruk
    Es Teh
    Es Degan
    Teh Hangat
    Susu Soda

    ListBox2
    Name: LBMenupilih
    MultiSelect: True

    Button1
    Name: BPilih
    Caption: Pilih

    Button2
    Name: BHapus
    Caption: Hapus

    Sehingga tampilannya seperti gambar dibawah ini:

    [​IMG]


    LANGKAH NON VISUAL / CODING

    BPilih
    Event OnClick
    Code:
    procedure TFListbox.BPilihClick(Sender: TObject);
    var
      i: integer;
    begin
      { Memilih item dari LBDaftarmenu yang dipilih ke LBMenupilih }
      for i:= 0 to (LBDaftarmenu.Items.Count-1) do
      if LBDaftarmenu.Selected[i] then
      LBMenupilih.Items.Add(LBDaftarmenu.Items.Strings[i]);
    end;
    BHapus
    Event OnClick
    Code:
    procedure TFListbox.BHapusClick(Sender: TObject);
    var
      i: integer;
    begin
      // Konfirmasi penghapusan data di LBMenupilih
      if messagedlg('Konfirmasi','Yakin ingin menghapus?',mtConfirmation,mbokcancel,0) = mrOk then
      (* Menghapus dari item yang dipilih *)
      for i:= (LBMenupilih.Items.Count-1) downto 0 do
      if LBMenupilih.Selected[i] then
      LBMenupilih.Items.Delete(i);
    end;
    PENJELASAN PROGRAM APLIKASI

    Properti MultiSelect dipakai untuk menentukan apakah user dapat memilih beberapa item sekaligus. JIka bernila False maka user hanya dapat memilih 1 item saja. Jika bernilai True maka user dapat memilih beberapa item sekaligus. Untuk memilih item-item yang berurutan tekan tombol Shift dan klik tombol kiri mouse. Untuk memilih item-item yang tidak berurutan, tekan tombol Ctrl dan klik tombol kiri mouse.

    Jangan lupa waktu mengisikan pilihan pada komponen LBDaftarMenu pada properti Items isikan tiap 1 baris 1 item dengan menekan enter. Anda dapat memilih item-item pada DaftarMenu, jika anda klik tombol Pilih, item-item yang dipilih akan ditampilkan di Listbox Menu yang dipilih.

    Jika anda klik tombol Hapus, item-item akan dihapus dari Daftar Menu, sebelum diproses, ditampilkan kotak dialog untuk konfirmasi penghapusan. Kode yang telah anda tuliskan adalah:
    if messagedlg( 'Konfirmasi', 'Yakin ingin menghapus?', mtConfirmation, mbokcancel, 0) = mrOk then
    Yang akan menghasilkan kotak dialog seperti gambar di bawah ini, jika dijawab OK maka proses penghapusan akan dilakukan, jika dijawab Cancel maka penghapusan dibatalkan.

    [​IMG]

    Listing program lengkapnya:
    Code:
    unit ulistbox;
    
    {$mode objfpc}{$H+}
    
    interface
    
    uses
      Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
    
    type
    
      { TFListbox }
    
      TFListbox = class(TForm)
      BPilih: TButton;
      BHapus: TButton;
      Label1: TLabel;
      Label2: TLabel;
      LBDaftarmenu: TListBox;
      LBMenupilih: TListBox;
      procedure BHapusClick(Sender: TObject);
      procedure BPilihClick(Sender: TObject);
      private
      { private declarations }
      public
      { public declarations }
      end;
    
    var
      FListbox: TFListbox;
    
    implementation
    
    {$R *.lfm}
    
    { TFListbox }
    
    procedure TFListbox.BPilihClick(Sender: TObject);
    var
      i: integer;
    begin
      { Memilih item dari LBDaftarmenu yang dipilih ke LBMenupilih }
      for i:= 0 to (LBDaftarmenu.Items.Count-1) do
      if LBDaftarmenu.Selected[i] then
      LBMenupilih.Items.Add(LBDaftarmenu.Items.Strings[i]);
    end;
    
    procedure TFListbox.BHapusClick(Sender: TObject);
    var
      i: integer;
    begin
      // Konfirmasi penghapusan data di LBMenupilih
      if messagedlg( 'Konfirmasi', 'Yakin ingin menghapus?', mtConfirmation, mbokcancel, 0 ) = mrOk then
      (* Menghapus dari item yang dipilih *)
      for i:= (LBMenupilih.Items.Count-1) downto 0 do
      if LBMenupilih.Selected[i] then
      LBMenupilih.Items.Delete(i);
    end;
    
    end.
    

    Maaf lama gk posting, see u next time...
     
    DQommedeDQ likes this.
  8. sopian sauri

    sopian sauri Member

    Messages:
    16
    Likes Received:
    2
    Trophy Points:
    11
    Sample project buat ussd ada ga ya?
     
    DQommedeDQ likes this.
  9. DQommedeDQ

    DQommedeDQ Member

    Messages:
    31
    Likes Received:
    0
    Trophy Points:
    6
    nyimak bozz
     

Share This Page