ตัวอย่างนี้สาธิตวิธีการเข้าถึงไฟล์รูปภาพในฐานข้อมูล
เพิ่มส่วนประกอบ TListBox, ส่วนประกอบ TImage และส่วนประกอบ TTable ลงในแบบฟอร์ม อินเทอร์เฟซหลักที่ออกแบบจะแสดงในรูปที่ 1
รูปที่ 1 อินเทอร์เฟซหลัก
ในระบบนี้ จำเป็นต้องออกแบบฐานข้อมูล Image.db ใหม่ที่ใช้ Paradox 7 รูปที่ 2 แสดงฐานข้อมูล Image.db ที่เสร็จสมบูรณ์
รูปที่ 2 ฐานข้อมูลที่ออกแบบ
เพื่ออำนวยความสะดวกในการทดสอบโปรแกรม ฐานข้อมูล Image.db จะถูกจัดเก็บไว้ในเส้นทางที่เป็นที่ตั้งของโปรแกรมตัวอย่าง
ตั้งค่าคุณสมบัติ TableName ของส่วนประกอบ TTable เป็น Image.db และคุณสมบัติ Active เป็น True
เมื่อเริ่มต้นการทำงานของโปรแกรม ก่อนอื่นจะพิจารณาว่ามีบันทึกอยู่ในฐานข้อมูล Image.db หรือไม่ หากไม่มีบันทึก ให้รันโค้ดต่อไปนี้เพื่อเพิ่มไฟล์ "bird.bmp" ลงในฐานข้อมูล Image.db:
ขั้นตอน TForm1.FormCreate (ผู้ส่ง: TObject);
var
บันทึก:TMemoryStream;
เริ่ม
ถ้า Table1.Eof และ Table1.Bof แล้ว
เริ่ม
ด้วย Table1 ทำ
เริ่ม
แทรก;
FieldByName('ชื่อ').AsString:='นก';
บันทึก:=TMemoryStream.Create();
mem.LoadFromFile('bird.bmp');
TBlobField(FieldByName('ข้อมูล')).LoadFromStream(mem);
โพสต์;
จบ;
จบ;
จบ;
จากนั้นเพิ่มไฟล์รูปภาพ "sample.wav", "leaf.wav" และ "lotus" ลงในฐานข้อมูล Image.db ตามลำดับในลักษณะเดียวกัน
สุดท้าย เพิ่มชื่อไฟล์ที่เก็บไว้ในฐานข้อมูล Image.db ไปยังคอมโพเนนต์ TListBox ของแบบฟอร์มโดยใช้รหัสต่อไปนี้:
ด้วย Table1 ทำ
เริ่ม
อันดับแรก;
ในขณะที่อีฟไม่ทำ
เริ่ม
ListBox1.Items.Add(FieldByName('Name').AsString);
ต่อไป;
จบ;
จบ;
ในระหว่างการรันโปรแกรม หากผู้ใช้เลือกไฟล์รูปภาพในส่วนประกอบ TListBox ของแบบฟอร์ม โปรแกรมจะใช้วิธีแรกของส่วนประกอบ TTable เพื่อตั้งค่าบันทึกแรกในตารางข้อมูลเป็นบันทึกปัจจุบัน จากนั้นจึงสำรวจ ฐานข้อมูลผ่านการวนซ้ำ หากเนื้อหาของฟิลด์ชื่อในเรคคอร์ดหนึ่งเหมือนกับการเลือกของผู้ใช้ ระบบจะอ่านข้อมูลรูปภาพในช่องข้อมูลในเรคคอร์ด และรูปภาพจะแสดงบนส่วนประกอบ TImage บนแบบฟอร์ม รหัสมีดังนี้:
ขั้นตอน TForm1.ListBox1Click (ผู้ส่ง: TObject);
var
บันทึก:TStream;
bmp:TBitmap;
เริ่ม
ด้วย Table1 ทำ
เริ่ม
อันดับแรก;
ในขณะที่อีฟไม่ทำ
เริ่ม
ถ้า FieldByName('Name').AsString=ListBox1.Items[ListBox1.ItemIndex] แล้ว
หยุดพัก;
ต่อไป;
จบ;
bmp:=TBitmap.สร้าง;
บันทึก:=CreateBlobStream(FieldByName('Data'),bmRead);
บันทึกตำแหน่ง:=0;
bmp.LoadFromStream(บันทึก);
self.Image1.Picture.Assign (bmp);
bmp.ฟรี;
บันทึกฟรี;
จบ;
จบ;
รหัสโปรแกรมเป็นดังนี้:
หน่วย หน่วยที่ 1;
อินเตอร์เฟซ
การใช้งาน
Windows, ข้อความ, SysUtils, ตัวแปร, คลาส, กราฟิก, การควบคุม, แบบฟอร์ม,
กล่องโต้ตอบ, StdCtrls, DB, DBTables, mmsystem, ExtCtrls;
พิมพ์
TForm1 = คลาส (TForm)
ListBox1: TListBox;
Table1: TTตาราง;
ภาพที่ 1: TImage;
ขั้นตอน FormCreate (ผู้ส่ง: TObject);
ขั้นตอน ListBox1Click (ผู้ส่ง: TObject);
ส่วนตัว
{ประกาศส่วนตัว}
สาธารณะ
{ประกาศสาธารณะ}
จบ;
var
แบบฟอร์ม 1: TForm1;
การดำเนินการ
{$R *.dfm}
ขั้นตอน TForm1.FormCreate (ผู้ส่ง: TObject);
var
บันทึก:TMemoryStream;
เริ่ม
ถ้า Table1.Eof และ Table1.Bof แล้ว
เริ่ม
ด้วย Table1 ทำ
เริ่ม
แทรก;
FieldByName('ชื่อ').AsString:='นก';
บันทึก:=TMemoryStream.Create();
mem.LoadFromFile('bird.bmp');
TBlobField(FieldByName('ข้อมูล')).LoadFromStream(mem);
โพสต์;
แทรก;
FieldByName('ชื่อ').AsString:='ตัวอย่าง';
บันทึก:=TMemoryStream.Create();
mem.LoadFromFile('sample.bmp');
TBlobField(FieldByName('ข้อมูล')).LoadFromStream(mem);
โพสต์;
แทรก;
FieldByName('ชื่อ').AsString:='leaf';
บันทึก:=TMemoryStream.Create();
mem.LoadFromFile('leaf.bmp');
TBlobField(FieldByName('ข้อมูล')).LoadFromStream(mem);
โพสต์;
แทรก;
FieldByName('ชื่อ').AsString:='Lotus';
บันทึก:=TMemoryStream.Create();
mem.LoadFromFile('Lotus.bmp');
TBlobField(FieldByName('ข้อมูล')).LoadFromStream(mem);
โพสต์;
บันทึกฟรี;
จบ;
จบ;
ด้วย Table1 ทำ
เริ่ม
อันดับแรก;
ในขณะที่อีฟไม่ทำ
เริ่ม
ListBox1.Items.Add(FieldByName('Name').AsString);
ต่อไป;
จบ;
จบ;
จบ;
ขั้นตอน TForm1.ListBox1Click (ผู้ส่ง: TObject);
var
บันทึก:TStream;
bmp:TBitmap;
เริ่ม
ด้วย Table1 ทำ
เริ่ม
อันดับแรก;
ในขณะที่อีฟไม่ทำ
เริ่ม
ถ้า FieldByName('Name').AsString=ListBox1.Items[ListBox1.ItemIndex] แล้ว
หยุดพัก;
ต่อไป;
จบ;
bmp:=TBitmap.สร้าง;
บันทึก:=CreateBlobStream(FieldByName('Data'),bmRead);
บันทึกตำแหน่ง:=0;
bmp.LoadFromStream(บันทึก);
self.Image1.Picture.Assign (bmp);
bmp.ฟรี;
บันทึกฟรี;
จบ;
จบ;
จบ.
บันทึกไฟล์แล้วกดปุ่ม F9 เพื่อรันโปรแกรม หน้าจอเริ่มต้นของโปรแกรมจะแสดงในรูปที่ 3
หลังจากเลือกรายการในส่วนประกอบ TListBox ไฟล์รูปภาพที่เกี่ยวข้องจะปรากฏขึ้น ดังแสดงในรูปที่ 4
รูปที่ 3 หน้าจอเริ่มต้นการทำงานของโปรแกรม