Showing posts with label Borland Delphi. Show all posts
Showing posts with label Borland Delphi. Show all posts

Friday, March 30, 2018

Menyimpan gambar ke database menggunakan Delphi

Tutorial berikut menjelaskan bagaimana cara menyimpan gambar atau foto ke database menggunakan Delphi dan databasenya MS. Access, MySQL dan Microsoft SQL Server. Sebelumnya saya sudah membuat tulisan cara menyimpan gambar atau foto ke database tetapi menggunakan Visual Basic.

Simpan gambar ke database dengan Delphi

Sebenarnya tutorial tentang bagaimana cara menyimpan gambar atau foto ke database menggunakan delphi sudah banyak di internet, tetapi saya tidak menemukan satupun dari mereka yang cocok dalam artian programnya oke dari satu sisi tetapi error di sisi yang lain, oleh karena itu saya mempunyai ide untuk menulis artikel ini.

Database untuk menyimpan gambar

Pada contoh ini saya menggunakan database MS Access, tentu saja boleh menggunakan yang lain seperti database MySQL dengan komponen seperti MySQL DAC dari microOLAP, MyDAC dari Devart atau dari yang lainnya.

Program ini, selain menyimpan gambar juga menampilkan gambarnya, untuk format dan tabel databasenya silahkan lihat tulisan cara menyimpan gambar atau foto menggunakan Visual Basic.

Untuk menghemat waktu teman-teman berikut langsung saja saya bahas program dan source code-nya. Oh iya… Sebelum masuk ke pembahasan ada baiknya saya jelaskan dahulu, inti dari program ini adalah menyimpan gambar ke database dengan format gambar .bmp, kenapa harus format .bmp? Apakah format yang lain tidak didukung? Tentu saja didukung tetapi ada keperluan khusus yang mengharuskan formatnya harus berupa .bmp misalnya ketika teman-teman ingin menampilkan gambar ke report atau sebuah laporan yang menggunakan komponen Quick Report gambar yang didukung hanya yang memiliki format bitmap(.bmp).

Komponen pada form Delphi

Sekarang yang harus kita lakukan adalah menambahkan komponen ke form seperti pada gambar di atas, dengan komponen dan propertinya sebagai berikut :

  • ADOConnection1 : LoginPrompt = False. Buat koneksinya dengan cara klik ganda pada komponen ADOConnection1 kemudian klik Build->Pilih : Microsoft Jet 4.0 OLE DB Provider->Carilah lokasi databasenya->Ok->Ok
  • ADOQuery1 : Connection = ADOConnection1, CursorType = ctStatic, Active = True. Sekarang klik kanan ADOQuery1 dan pilih Fields Editor->Klik kanan->Add all fields.
  • DataSource1 : DataSet = ADOQuery1
  • DBGrid1 : ReadOnly = True, DataSource = DataSource1. Kita akan menampilkan field “nama” saja, untuk itu klik kanan DBGrid1->Columns Editor. Lihat gambar di bawah, klik 1->Isi sesuai 2 dan 3.
  • OpenPictureDialog1 : Filter = All (*.jpg;*.jpeg;*.bmp)|*.jpg;*.jpeg;*.bmp|JPEG Image File (*.jpg)|*.jpg|JPEG Image File (*.jpeg)|*.jpeg|Bitmaps (*.bmp)|*.bmp
  • Label1 : Caption = Nama
  • Edit1 : Text = ” (kosongkan)
  • Image1 : Stretch = True
  • Button1 : Caption = Cari gambar dan simpan

Kode menyimpan gambar ke database

Selanjutnya kita akan menulis barisan kode programnya.
Tambahkan sedikit baris kode berikut pada bagian uses :

jpeg, axCtrls

Pada bagian type tambahkan barisan kode berikut :

procedure tampildata();
procedure convertobmp(filename:TFileName);

Tambahkan juga procedure berikut di bawah implementation :

// Untuk menyegarkan data pada ADOQuery1
procedure TForm1.tampildata();
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.text := 'select * from tb_foto';
  ADOQuery1.Active:=true;
  DBGrid1CellClick(DBGrid1.Columns[0]);
end;

// Konversi setiap gambar ke format Bitmap
// Kode ini saya dapatkan dari stackoverflow.com
procedure TForm1.convertobmp(filename:TFileName);
Var
     OleGraphic               : TOleGraphic;
     fs                       : TFileStream;
     Source                   : TImage;
     BMP                      : TBitmap;
Begin
     Try
          OleGraphic := TOleGraphic.Create; //The magic class!

          fs := TFileStream.Create(filename, fmOpenRead Or fmSharedenyNone);
          OleGraphic.LoadFromStream(fs);

          Source := Timage.Create(Nil);
          Source.Picture.Assign(OleGraphic);

          BMP := TBitmap.Create; //Converting to Bitmap
          bmp.Width := Source.Picture.Width;
          bmp.Height := source.Picture.Height;
          bmp.Canvas.Draw(0, 0, source.Picture.Graphic);

          image1.Picture.Bitmap := bmp; //Show the bitmap on form
          image1.Refresh;
          fs.Free;
          OleGraphic.Free;
          Source.Free;
          bmp.Free;
     Finally

     End;
end;

Sekarang klik ganda button yang ada pada form dan gantikan kodenya dengan yang di bawah ini :

procedure TForm1.Button1Click(Sender: TObject);
var gambar : TMemorystream;
begin
  if(Edit1.Text = '') then begin
    ShowMessage('Silahkan isi nama dulu');
    edit1.SetFocus;
    exit;
  end;
  if OpenPictureDialog1.Execute then begin
    try
      convertobmp(OpenPictureDialog1.FileName);
      gambar := TMemorystream.Create;
      Image1.Picture.Graphic.SaveToStream(gambar);
      ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Text := 'insert into tb_foto (nama,gambar) values (:p0, :p1)';
      ADOQuery1.Parameters[0].Value :=  Edit1.text;
      ADOQuery1.Parameters[1].LoadFromStream(gambar,ftBlob);
      ADOQuery1.ExecSQL;
      tampildata();
    except
    on E:Exception do
      ShowMessage('Maaf terjadi kesalahan.' + #13 + 'Error : ' + E.Message);
    end;
  end;
end;

Ketika DbGrid di klik, gantikan kode eventnya sebagai berikut :

procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
  Stream : TADOBlobStream;
  GambarBmp : TBitmap;
  Buffer : Word;
begin
  if (not ADOQuery1.Eof) then begin
    Edit1.Text:= DBGrid1.Fields[0].Text;
    GambarBmp := TBitmap.Create;
    Stream := TADOBlobStream.Create(ADOQuery1gambar,bmRead);
    Stream.Read(Buffer,SizeOf(Buffer));
    Stream.Position := 0;
    GambarBmp.LoadFromStream(Stream);
    Image1.Picture.Bitmap := GambarBmp;
    image1.Refresh;
  end;
end;

Dengan database MySQL

Saya mencoba untuk komponen MyDAC dari Devart perlu dimodifikasi sedikit untuk even DbGrid sebagai berikut:

procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
  Stream : TMemoryStream;
  GambarBmp : TBitmap;
begin
  if (not MyQuery1.Eof) then begin
    Edit1.Text:= DBGrid1.Fields[0].Text;
    GambarBmp := TBitmap.Create;
    Stream := TMemoryStream.Create;
    try
      MyQuery1gambar.SaveToStream(Stream);
      Stream.Position := 0;
      GambarBmp.LoadFromStream(Stream);
      Image1.Picture.Bitmap := GambarBmp;
      image1.Refresh;
    finally
      Stream.Free;
    end;
  end;
end;

Sedangkan MySQL DAC dari microOLAP tidak terjadi masalah dengan kode yang sebelumnya.

Dengan database Microsoft SQL Server

Untuk SQL Server <= 2005 biasanya tipe data blob untuk penyimpanan foto belum didukung, oleh karena itu bisa menggunakan alternatif lain yaitu gunakan tipe data varbinary(max). Nah jika MS. SQL Server > 2005, kayaknya sudah mendukung tipe data Blob.

Thursday, March 29, 2018

Menampilkan & Simpan Gambar Ke Database di delphi

Di siang yang cerah dan gerimis ini saya akan memberikan lagi sebuah contoh program menyimpan gambar kedatabase,sekalian untuk memunculkanya juga. lumayan nih contoh program ini sudah ada Menu Tambah, Edit, Hapus,Cari jadi sekali mendayung minum air. ekh salahh... sekali mendayung dua pulau terlampaui.hahaa.....

Judul yang tepat apaan ya,bingung ngasihnya tapi udah lah yang penting is programnya iya kan Sob. Sekecil/sedikit apapun ilmu tapi itu sangat berguna juga bisa dikembangkan.

Modelnya sepeti Aplikasi karyawan x ya terserah lah kan sudah dibilang bingungngasih judulnya, ini deh pokonya tampilannya :

Jadi gini Sob, Aplikasi ini akan otomatis membuat Folder ke Drive (D:) untuk penyimpanan foto jadi folder yang bernama FotoKaryawan jangan dihapus.

Jika mau merubah Foto tinggal Klik Edit saja dan rubah deh fotonya nanti juga akan mereplace foto yang ada. Program ini tentunya memakai database donk tapi Acces, ada juga yang memakai MySql sudah saya kasih kalau tidak salah Listing Programnya dispostingan yang dulu, cuma mungkin bagi yang kurang paham bisa ribet utak atiknya...........
kalau ingin utak atik Programnya silahkan sedot disini jadi tidak usah lama neerangin cara pembuatannya tinggal langsung jalanin programnya dan rubah-rubah saja !! Download File disini

Kalo ada Pesan Error Misal SUIDBCtrls atau MySQLDBTables tidak ditemukan, coba di Uses'y hapus (SUIDBCtrls,MySQLDBTables ).

Semoga Bermanfaat ya dan juga semoga Link downloadya masih berlaku.heheheee...

Wednesday, March 28, 2018

Tutorial Input Dengan Barcode Scanner di Delphi

Tutorial Input Dengan Barcode Scanner di Delphi merupakan sebuah program dimana untuk melakukan pemasukan data dengan menggunakan Barcode Scanner. Mengenai Delphi sendiri adalah sebuah bahasa pemrograman (Programming Language atau Development Language) yang digunakan untk merancang suatu aplikasi program. Delphi termasuk dalam pemrograman bahasa tingkat tinggi (high level language).

Maksud dari bahasa tingkat tinggi yaitu perintah-perintah programnya menggunakan bahasa yang mudah dipahami oleh manusia. Bahasa pemrograman Delphi disebut bahasa prosedural artinya mengikuti urutan tertentu. Dalam membuat aplikasi perintah-perintah, Delphi menggunakan lingkungan pemrograman visual.

Pemrograman Delphi dirancang untuk beroperasi dibawah sistem operasi Windows. Program ini mempunyai beberapa keunggulan, yaitu produktivitas, kualitas, pengembangan perangkat lunak, kecepatan kompiler, pola desain yang menarik serta diperkuat dengan bahasa perograman yang terstruktur dalam struktur bahasa perograman Object Pascal.

Kali saya akan berbagi sedikit ilmu tentang program Delphi, salah satunya tentang Barcode.  Karena Barcode Scanner sendiri sangatlah penting dan itu sampai sekarang masih dipakai di perusahaan – perusahaan besar untuk melakukan input data, contohnya dilakukan untuk input data stock barang, Input data pengiriman barang, input data pembelian dan masih banyak lagi.
Berikut contoh dasar Tutorial Input Dengan Barcode Scanner di Delphi yang pernah saya gunakan untuk membuat program barcode laporan pengiriman kurir.

Pertama : Buka Form baru
Kedua : Klik pada Toolbar Component Pallete dan pilih Edit lalu letakkan pada Form
Ketiga : Pilih Edit1 pada Form,  Klik pada Object Inspector Pilih Propertis - events -  double klik pada OnKeyPress jika sudah maka akan menampilkan kode seperti dibawah ini

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin

end;
end.

Jika sudah menampakkan kode seperti diatas lalu tambahkan kode seperti dibawah ini

var textpesan : string; //variabel untuk menampilkan pesan
begin
if Key = #13 then //kondisi saat melakukan barcode (jika barcode ok maka lanjutkan)
  begin
    textpesan :='Yang anda barcode adalah '+Edit1.Text; //pesan yang ditampilkan saat dimulai barcode
    Application.MessageBox(PChar(textpesan),'Informasi Barcode',MB_OK or MB_ICONINFORMATION);
    Edit1.SelectAll; //jika diklik ok pada pesan makan edit1 akan diblok secara otomatis
  end;
end.

Keempat : RUN (F9)



Terimakasih telah membaca Tutorial Input Dengan Barcode Scanner di Delphi, semoga dapat membantu dan menambah wawasan anda khususnya program Delphi dan jika anda ingin mengembangkannya dengan menggunakan database anda juga dapat mempelajari tentang bagaimana cara Koneksi Database MySQL Ke Delphi Dengan Komponen Zeos.


Thursday, March 22, 2018

Cara Instal FastReport 4 Pada Delphi 7

FastReport merupakan visual komponen librari (VCL) yang digunakan untuk membuat laporan dinamis secara cepat dan efisien. FastReport  menyediakan semua alat yang diperlukan untuk mengembangkan laporan, didalamnya juga terdapat visual report designer, reporting core, dan untuk tampilan preview sebelum dicetak. Selain itu juga dapat menyajikan laporan dalam bentuk grafik.

Cara Instalasi FastReport

 Langkah 1. Copy runtime packages ke dalam System folder

- Tutup terlebih dahulu Delphi Anda
- copy \Lib\fs*.bpl file (* = Versi delphi yang Anda gunakan ) ke Windows\System32
  (Windows\System untuk Windows 95/98/ME)
- copy \Lib\fsDB*.bpl file ke Windows\System32
- copy \Lib\fsBDE*.bpl file ke Windows\System32
- copy \Lib\fsADO*.bpl file ke Windows\System32
- copy \Lib\fsIBX*.bpl file ke Windows\System32
- copy \Lib\fsTee*.bpl file ke Windows\System32
- copy \Lib\frx*.bpl file ke Windows\System32
- copy \Lib\frxDB*.bpl file ke Windows\System32
- copy \Lib\frxBDE*.bpl file ke Windows\System32
- copy \Lib\frxADO*.bpl file ke Windows\System32
- copy \Lib\frxIBX*.bpl file ke Windows\System32
- copy \Lib\frxDBX*.bpl file ke Windows\System32
- copy \Lib\frxTee*.bpl file ke Windows\System32
- copy \Lib\frxe*.bpl file ke Windows\System32

Langkah 2. Install packages

- in the Delphi IDE, pilih "Component|Install Packages..." menu item
- tekan tombol "Add..." dan pilih \Lib\dclfs*.bpl file (* = Versi delphi yang Anda gunakan)
- tekan tombol "Add..." dan pilih \Lib\dclfsDB*.bpl file
- tekan tombol "Add..." dan pilih \Lib\dclfsBDE*.bpl file
- tekan tombol "Add..." dan pilih \Lib\dclfsADO*.bpl file (D5+)
- tekan tombol "Add..." dan pilih \Lib\dclfsIBX*.bpl file (D5+)
- tekan tombol "Add..." dan pilih \Lib\dclfsTee*.bpl file
- tekan tombol "Add..." dan pilih \Lib\dclfrx*.bpl file
- tekan tombol "Add..." dan pilih \Lib\dclfrxDB*.bpl file
- tekan tombol "Add..." dan pilih \Lib\dclfrxBDE*.bpl file
- tekan tombol "Add..." dan pilih \Lib\dclfrxADO*.bpl file (D5+)
- tekan tombol "Add..." dan pilih \Lib\dclfrxIBX*.bpl file (D5+)
- tekan tombol "Add..." dan pilih \Lib\dclfrxDBX*.bpl file (D6+)
- tekan tombol "Add..." dan pilih \Lib\dclfrxTee*.bpl file
- tekan tombol "Add..." dan pilih \Lib\dclfrxe*.bpl file

Langkah 3. Tambah paths kedalam library path

- Pada tampilan Delphi, pilih menu "Tools|Environmet options..."
- klik tab "Library", "Library path" edit box
- tambah path ke folder "FastReport 4\Lib"

 Semoga berhasil :)

Tuesday, March 6, 2018

Membuat Aplikasi Chat Sederhana dengan Delphi

Chating merupakan aktivitas yang bisa dikatakan cukup menyenangkan. saat ini sudah banyak yang mendevelop aplikasi chating untuk smartphone semisal WeChat, Line dan Semacamnya Bahkan Saat ini hampir semua Jejaring Sosial sudah ada layanan Chatingnya.

Oke deh. biar basa basinya gak kepanjangan jadi langsung aja saya sharing Source Code Aplikasi Chating yang dibuat dengan Delphi. Silahkan Download disini. Sebagai bahan percobaan sudah saya uji coba di virtualbox dan berjalan lancar. Anda dapat mencobanya pada jaringan peer to peer atau jaringan Local Area Network anda.

Sebagai Tambahan. Aplikasi Sederhana ini bukan saya yang membuat. Murni Hasil Download. tapi saya lupa Download dimana soalnya sudah lumayan lama. Jadi Jangan tanyakan saya masalah codingnya. soalnya saya juga gak tahu. hahaha. Berikut Contoh Screenshoot Ujicobanya.

Gambar dari komputer A:


Gambar dari komputer B (Virtual Box) :

Monday, March 5, 2018

Animasi Tulisan dengan delphi 7

Kali ini tutorial ANimasi Tulisan Berjalan dengan Delphi, dengan bergerak kekiri dan kekanan, kayak mantul gitu.... aplikasi ini menggunakan borland Delphi 7, dengan komponen :

1. TTimer 
2. TLabel 
3. dan TPanel

Aplikasi ini cukup sederhana dengan code program yang sangat simple dan mudah untuk digunakan dalam menambah atau mempercantik tampilan di FORM delphi...
langsung ke TKP aja ya.... 

Pertama :

Buat sebuah form di delphi 
masukan komnen seperti diatas ke dalam form

Seperti screenshot dibawah ini :



isi code Program sperti berikut :

Pada Variable isi dengan

var
  Form1: TForm1;
  a,b: BYTE;

implementation

{$R *.dfm}


Note : tulisan merah adalah Variable untuk menjalankan perintah

Kedua

isi code berikut pada TTimer

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if      Label1.Left > 550 then b:=1
else if Label1.Left < 2   then b:=0;

if b=0 then Label1.Left:=Label1.Left+1
else Label1.Left:=Label1.Left-1;
end;


Ketiga :

RUN > F9 

Hasilnya :




Agar Program Tidak Bisa di Run 2 Kali Delphi

Supaya Program tidak bisa dieksekuisi 2x caranya sangat sederhana
Buka Project.dpr dengan notepad++ atau text editor lainya, atau bisa juga pada project manager pilih view source
maka akan terlihat coding dimana form di create..
pertama tambahkan pada bagian uses WinApi, dan Dialogs (Contoh dibuat menggunakan Delphi XE)
1
2
3
4
5
6
7
8
9
10
program penjualan;
uses
 class="skimlinks-unlinked">Vcl.Forms,
 Winapi.Windows,
 Vcl.Dialogs,
 datamodul in 'datamodul.pas' {DM: TDataModule},
 unitmenu in 'unitmenu.pas' {fmenu},
 unitcustomer in 'unitcustomer.pas' {fcustomer},
. . .
setelah menambahkan code diatas, selanjutnya sisipkan code ini setelah begin, sebelum Application.Initialize;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
. . .
{$R *.res}
begin
 CreateMutex(nil,True,'PROGRAM_NAME');
 if GetLastError = ERROR_ALREADY_EXISTS then
 begin
 MessageDlg('Program Already Running..',mtError,[mbOK],0);
 Halt;
 end;
 Application.Initialize;
 Application.MainFormOnTaskbar := True;
 Application.CreateForm(TDM, DM);
. . .
Pada bagian :  CreateMutex(nil,True,’PROGRAM_NAME’);
Program_name ganti dengan nama program yg kitabuat + extensinya misal :
CreateMutex(nil,True,’Project1.exe’);
kemudian bisa di cek dengan menge-run program 2x, jika berhasil akan tampak seperti gambar