Contoh ini menunjukkan cara mengakses file gambar di database.
Tambahkan komponen TListBox, komponen TImage dan komponen TTable ke formulir. Antarmuka utama yang dirancang ditunjukkan pada Gambar 1.
Gambar 1 Antarmuka utama
Dalam sistem ini, database Image.db baru berdasarkan Paradox 7 perlu dirancang. Gambar 2 menunjukkan database Image.db yang telah selesai.
Gambar 2 Database yang dirancang
Untuk memudahkan pengujian program, database Image.db disimpan di jalur tempat program contoh berada.
Atur properti TableName komponen TTable ke Image.db dan properti Aktif ke True.
Pada awal program dijalankan, terlebih dahulu akan ditentukan apakah ada record di database Image.db. Jika tidak ada record, maka jalankan kode berikut untuk menambahkan file "bird.bmp" ke database Image.db:
prosedur TForm1.FormCreate(Pengirim: TObject);
var
mem:TMeryStream;
mulai
jika Table1.Eof dan Table1.Bof maka
mulai
dengan Tabel1 lakukan
mulai
Menyisipkan;
FieldByName('Nama').AsString:='Burung';
mem:=TMemoryStream.Create();
mem.LoadFromFile('bird.bmp');
TBlobField(FieldByName('Data')).LoadFromStream(mem);
Pos;
akhir;
akhir;
akhir;
Kemudian tambahkan file gambar "sample.wav", "leaf.wav" dan "lotus" ke database Image.db secara berurutan dengan cara yang sama.
Terakhir, tambahkan nama file yang disimpan dalam database Image.db ke komponen formulir TListBox melalui kode berikut:
dengan Tabel1 lakukan
mulai
Pertama;
sementara Eof tidak melakukannya
mulai
ListBox1.Items.Add(FieldByName('Nama').AsString);
Berikutnya;
akhir;
akhir;
Selama menjalankan program, jika pengguna memilih file gambar di komponen formulir TListBox, program akan menggunakan metode Pertama dari komponen TTable untuk menetapkan catatan pertama dalam tabel data sebagai catatan saat ini, dan kemudian melintasi database melalui loop. Jika isi bidang Nama dalam catatan tertentu sama dengan pilihan pengguna, maka informasi gambar dalam bidang Data dalam catatan dibacakan, dan gambar ditampilkan pada komponen TImage pada formulir. Kodenya adalah sebagai berikut:
prosedur TForm1.ListBox1Click(Pengirim: TObject);
var
mem:TSstream;
bmp:TBitmap;
mulai
dengan Tabel1 lakukan
mulai
Pertama;
sementara Eof tidak melakukannya
mulai
jika FieldByName('Name').AsString=ListBox1.Items[ListBox1.ItemIndex] maka
merusak;
Berikutnya;
akhir;
bmp:=TBitmap.Buat;
mem:=BuatBlobStream(FieldByName('Data'),bmRead);
mem.Posisi:=0;
bmp.LoadFromStream(mem);
self.Image1.Picture.Assign(bmp);
bmp.Gratis;
mem.Gratis;
akhir;
akhir;
Kode programnya adalah sebagai berikut:
satuan Unit1;
antarmuka
kegunaan
Windows, Pesan, SysUtils, Varian, Kelas, Grafik, Kontrol, Formulir,
Dialog, StdCtrls, DB, DBTables, mmsystem, ExtCtrls;
jenis
TForm1 = kelas(TForm)
Kotak Daftar1: TListBox;
Tabel1: TTabel;
Gambar1: Gambar;
prosedur FormCreate(Pengirim: TObject);
prosedur ListBox1Click(Pengirim: TObject);
pribadi
{Deklarasi pribadi}
publik
{Pernyataan publik}
akhir;
var
Formulir1: TForm1;
pelaksanaan
{$R *.dfm}
prosedur TForm1.FormCreate(Pengirim: TObject);
var
mem:TMeryStream;
mulai
jika Table1.Eof dan Table1.Bof maka
mulai
dengan Tabel1 lakukan
mulai
Menyisipkan;
FieldByName('Nama').AsString:='Burung';
mem:=TMemoryStream.Create();
mem.LoadFromFile('bird.bmp');
TBlobField(FieldByName('Data')).LoadFromStream(mem);
Pos;
Menyisipkan;
FieldByName('Nama').AsString:='Contoh';
mem:=TMemoryStream.Create();
mem.LoadFromFile('sample.bmp');
TBlobField(FieldByName('Data')).LoadFromStream(mem);
Pos;
Menyisipkan;
FieldByName('Nama').AsString:='daun';
mem:=TMemoryStream.Create();
mem.LoadFromFile('leaf.bmp');
TBlobField(FieldByName('Data')).LoadFromStream(mem);
Pos;
Menyisipkan;
FieldByName('Nama').AsString:='Lotus';
mem:=TMemoryStream.Create();
mem.LoadFromFile('Lotus.bmp');
TBlobField(FieldByName('Data')).LoadFromStream(mem);
Pos;
mem.Gratis;
akhir;
akhir;
dengan Tabel1 lakukan
mulai
Pertama;
sementara Eof tidak melakukannya
mulai
ListBox1.Items.Add(FieldByName('Nama').AsString);
Berikutnya;
akhir;
akhir;
akhir;
prosedur TForm1.ListBox1Click(Pengirim: TObject);
var
mem:TSstream;
bmp:TBitmap;
mulai
dengan Tabel1 lakukan
mulai
Pertama;
sementara Eof tidak melakukannya
mulai
jika FieldByName('Name').AsString=ListBox1.Items[ListBox1.ItemIndex] maka
merusak;
Berikutnya;
akhir;
bmp:=TBitmap.Buat;
mem:=BuatBlobStream(FieldByName('Data'),bmRead);
mem.Posisi:=0;
bmp.LoadFromStream(mem);
self.Image1.Picture.Assign(bmp);
bmp.Gratis;
mem.Gratis;
akhir;
akhir;
akhir.
Simpan file, lalu tekan tombol F9 untuk menjalankan program. Layar awal program ditunjukkan pada Gambar 3.
Setelah memilih item di komponen TListBox, file gambar terkait akan ditampilkan, seperti yang ditunjukkan pada Gambar 4.
Gambar 3 Layar awal program yang sedang berjalan