Wednesday, 15 June 2016T6/15/2016 10:53:00 pm

CARA MUDAH MENYIMPAN DAN MENAMPILKAN FORMAT GAMBAR JPG DAN JPEG KEDALAM DATABASE PADA DELPHI

Salam blogger.......pada tutorial delphi kali ini saya akan share cara mudah menampilkan dan menyimpan gambar dengan format jpeg dan JPG ke dalam database pada delphi. jika dalam sebuah program yang kita buat memerlukan sebuah gambar atau foto di delphi maka kita perlu menyimpan gambar tersebut ke dalam database, pada delphi terdapat komponen TDBimage yang hanya mendukung format bitmap atau bmp untuk menyimpan dan menampilkan gambar atau foto dari database, nah bagaimana jika kita ingin menyimpan dan menampilkan gambar atau foto dengan format jpeg di delphi. untuk mengatasi hal tersebut kita perlu sedikit trik untuk dapat menampilkan format gambar jpeg di delphi. berikut ini saya akan memberikan tutorial bagaimana cara menyimpan dan menampilkan gamara dengan format jpeg kedalam database.

Yang pertama kita lakukan adalah membuat database nya terlebih dahulu. pada program delphi kali ini saya menggunakan database ms. acccess 2003. buat sebuah tabel di database access terlebih dahulu dengan  field id , nama gambar, path, gambar ( lihat gambar dibawah ini ).
Jika database sudah dibuat, simpan database tersebut kedalam folder yang nantinya akan kita buat project delphinya. selanjutnya buka delphi sobat dan buat sebah project baru, desain form nya seperti pada gambar di bawah ini.
Selanjutnya tambahkan beberapa komponen di bawah ini kedalam form tersebut :
  1. ADOcoonection1
  2. ADOtable1
  3. datasource1
  4. 7 buah button
  5. dbnavigator
  6. dbgrid
  7. dbimage
  8. dbedit
  9. openpicturedialog
Jika sudah buat perintah fungsi coding seperti contoh di bawah ini untuk menjalankan programnya ;

unit Ugambar;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Buttons,
  Data.DB, Vcl.Grids, Vcl.DBGrids, Vcl.DBCtrls, Vcl.ExtDlgs, Vcl.Mask, jpeg, axCtrls,
  Data.Win.ADODB;

type
  TFsetting = class(TForm)
    Panel1: TPanel;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    BitBtn6: TBitBtn;
    BitBtn5: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn1: TBitBtn;
    ADOsetting: TADOConnection;
    Tsetting: TADOTable;
    TsettingID: TWideStringField;
    TsettingNamaGambar: TWideStringField;
    TsettingGambar: TBlobField;
    DSsetting: TDataSource;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    Label2: TLabel;
    DBEdit2: TDBEdit;
    Panel2: TPanel;
    DBImage1: TDBImage;
    BitBtn7: TBitBtn;
    OpenPictureDialog1: TOpenPictureDialog;
    DBNavigator1: TDBNavigator;
    DBGrid1: TDBGrid;
    TsettingPath: TWideStringField;
    DBEdit3: TDBEdit;
    procedure BitBtn6Click(Sender: TObject);
    procedure TsettingNewRecord(DataSet: TDataSet);
    procedure FormCreate(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure DSsettingStateChange(Sender: TObject);
    procedure BitBtn7Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BitBtn1Click(Sender: TObject);
  private
  procedure aktif;
  procedure nonaktif;
  function GenerateID(T: TDateTime): string;
  procedure convertobmp(filename:TFileName);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Fsetting: TFsetting;

implementation

{$R *.dfm}

procedure TFsetting.aktif;
begin
dbedit2.Enabled:=true;
end;

procedure TFsetting.BitBtn1Click(Sender: TObject);
begin
aktif;
tsetting.Append;
dbedit2.SetFocus;
dbnavigator1.Enabled:=false;
bitbtn7.Enabled:=true;
bitbtn6.Enabled:=false;
dbgrid1.Enabled:=false;
end;

procedure TFsetting.BitBtn2Click(Sender: TObject);
begin
//jika kotak isian masih ada yang kosong maka muncul kotak pesan
if not(dbedit1.Text <>'') or not(dbedit2.Text <>'') or not(dbedit3.Text <>'') then
begin
Application.MessageBox('Nama dan Gambar Masih Kosong !!!, Cek Kembali','Peringatan',
mb_Ok + Mb_IconExclamation);
dbedit2.SetFocus;
exit;
end;
Application.MessageBox('Gambar JPG Sudah Tersimpan','Info', mb_Ok + Mb_ICONINFORMATION);
tsetting.Post;
nonaktif;
bitbtn6.Enabled:=true;
bitbtn7.Enabled:=false;
dbgrid1.Enabled:=true;
dbnavigator1.Enabled:=true;
end;

procedure TFsetting.BitBtn3Click(Sender: TObject);
begin
aktif;
tsetting.Edit;
dbedit2.SetFocus;
bitbtn6.Enabled:=false;
bitbtn7.Enabled:=true;
dbgrid1.Enabled:=false;
dbnavigator1.Enabled:=false;
end;

procedure TFsetting.BitBtn4Click(Sender: TObject);
begin
if (application.MessageBox('Anda Yakin Ingin Menghapus Data Ini ?','Informasi',MB_ICONINFORMATION+MB_YESNO)=IDYES) then
tsetting.Delete;
nonaktif;
end;

procedure TFsetting.BitBtn5Click(Sender: TObject);
begin
tsetting.Cancel;
nonaktif;
bitbtn6.Enabled:=true;
bitbtn7.Enabled:=false;
dbgrid1.Enabled:=true;
dbnavigator1.Enabled:=true;
end;

procedure TFsetting.BitBtn6Click(Sender: TObject);
begin
if Application.MessageBox('Anda Yakin Ingin Keluar ...??','Informasi',MB_ICONINFORMATION+MB_YESNO)=IDYES
then
application.Terminate;
end;

procedure TFsetting.BitBtn7Click(Sender: TObject);
var
gambar : TMemorystream;
begin
if OpenPictureDialog1.Execute then
begin
try
convertobmp(OpenPictureDialog1.FileName);
dbedit3.Text:= OpenPictureDialog1.FileName;
gambar := TMemorystream.Create;
dbImage1.Picture.Graphic.SaveToStream(gambar);
tsettinggambar.LoadFromStream(gambar);
dbImage1.Visible:=True;
bitbtn2.Click;
finally
end;
end;
end;

procedure TFsetting.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);

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

     End;

end;

procedure TFsetting.DSsettingStateChange(Sender: TObject);
begin
bitbtn3.Enabled := Tsetting.State in [dsBrowse];
bitbtn1.Enabled := Tsetting.State in [dsBrowse];
bitbtn4.Enabled := Tsetting.State in [dsBrowse];
bitbtn5.Enabled := Tsetting.State in dsEditModes;
bitbtn2.Enabled := Tsetting.State in dsEditModes;
end;

procedure TFsetting.FormActivate(Sender: TObject);
begin
tsetting.close;
tsetting.Open;
tsetting.Refresh;
dbedit1.Enabled:=false;
nonaktif;
end;

procedure TFsetting.FormClose(Sender: TObject; var Action: TCloseAction);
begin
tsetting.Refresh;
tsetting.Close;
ADOsetting.Close;
end;

procedure TFsetting.FormCreate(Sender: TObject);
var
FileDB: string;
begin
// Tentukan letak file database anda
// Dalam hal ini database selalu berada pada folder yang sama dengan aplikasi
FileDB:=  'D:\GambarJPG\database\dbgambarJPG.mdb';
// Ubah Connection string
ADOsetting.Connected:= False;
ADOsetting.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;' +
'Data Source=' + FileDB + ';Persist Security Info=False;' +
'Jet OLEDB:Database Password="nadira07"';
ADOsetting.Connected:= True;
Tsetting.Open;
dbedit1.Enabled:=false;
bitbtn7.Enabled:=false;
dbedit3.Hide;
end;

function TFsetting.GenerateID(T: TDateTime): string;
var
Yr, Mn, Dy : Word;
Hr, Mnt, Sec, MSec : Word;
Begin
DecodeDate(T, Yr, Mn, Dy);
DecodeTime(T, Hr, Mnt, Sec, MSec);
Result := FormatFloat('00', Yr-2000) + FormatFloat('00', Mn) +
FormatFloat('00', Dy) + FormatFloat('00', Hr) +
FormatFloat('00', Mnt) + FormatFloat('00', Sec) +
FormatFloat('00', MSec);
end;

procedure TFsetting.nonaktif;
begin
dbedit1.Enabled:=false;
dbedit2.Enabled:=false;
dbimage1.Enabled:=false;
end;

procedure TFsetting.TsettingNewRecord(DataSet: TDataSet);
begin
TsettingID.Value:=GenerateID(now);
end;

Coding program diatas adalah cara menampilkan gambar dari database pada delphi dengan mengkonversikan gambar jpeg ke bitmap sebelum di tampilkan, sehingga pada saat di tampilkan gambar dengan format jpeg dapat berjalan dengan sempurna tanpa ada error. jika coding program sudah dibuat selanjutnya jalankan program nya dengan menekan F9/RUN. maka pada saat ditampilkan akan seperti pada gambar dibawah ini.
Pada contoh program diatas sobat dapat menambahkan, menyimpan, menghapus, dan mengedit gambar yang akan ditampilkan dan dismpan di database access. jika ingin menambahkan gambar yang lain sobat dapat mengcopy gambar dengan format jpg di folder D:\GambarJPG\background dengan size maksimal 1024 x 769 pixel. Demikian tutorial cara menyimpan dan menampilkan gambar format jpeg / jpg kedalam database pada delphi kali ini, semoga dapat bermanfaat. jika ingin melihat contoh programnya sobat dapat mengunduh programnya pada link dibawah.
Previous
Next Post »
0 Komentar untuk "CARA MUDAH MENYIMPAN DAN MENAMPILKAN FORMAT GAMBAR JPG DAN JPEG KEDALAM DATABASE PADA DELPHI"

Silahkan tinggalkan komentar dibawah ini,
Terima kasih sudah :
1. Berkomentar dengan sopan
2. Tidak meninggalkan link aktif dalam form komentar
3. Berkomentar sesuai postingan / artikel
4. Tidak membuat komentar yang mengandung SARA / SPAM
5. Memberikan informasi link / script yang tidak berfungsi

Terima Kasih Sudah Berkomentar

PENDAPAT ANDA TENTANG BLOG INI ?

Follow by Email

 
Copyright © 2014 uduy macal blog's - All Rights Reserved
Template By Kuncidunia
DMCA.com Protection Status