يوضح هذا المثال كيفية الوصول إلى ملفات الصور في قاعدة البيانات.
أضف مكون 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(Sender: TObject);
فار
mem:TMemoryStream;
يبدأ
إذا Table1.Eof وTable1.Bof ثم
يبدأ
مع Table1 القيام به
يبدأ
إدراج؛
FieldByName('Name').AsString:='Bird';
mem:=TMemoryStream.Create();
mem.LoadFromFile('bird.bmp');
TblobField(FieldByName('Data')).LoadFromStream(mem);
بريد؛
نهاية؛
نهاية؛
نهاية؛
ثم قم بإضافة ملفات الصور "sample.wav" و"leaf.wav" و"lotus" إلى قاعدة بيانات Image.db بشكل تسلسلي بنفس الطريقة.
وأخيرًا، قم بإضافة اسم الملف المخزن في قاعدة بيانات Image.db إلى مكون TListBox الخاص بالنموذج من خلال الكود التالي:
مع Table1 القيام به
يبدأ
أولاً؛
في حين لا Eof تفعل
يبدأ
ListBox1.Items.Add(FieldByName('Name').AsString);
التالي؛
نهاية؛
نهاية؛
أثناء تشغيل البرنامج، إذا قام المستخدم بتحديد ملف صورة في مكون TListBox للنموذج، فسيستخدم البرنامج الطريقة الأولى لمكون TTable لتعيين السجل الأول في جدول البيانات باعتباره السجل الحالي، ثم اجتيازه قاعدة البيانات من خلال سجل حلقة. إذا كان محتوى حقل الاسم في سجل معين هو نفس اختيار المستخدم، فستتم قراءة معلومات الصورة في حقل البيانات في السجل، ويتم عرض الصورة على مكون TImage في النموذج. الرمز هو كما يلي:
الإجراء TForm1.ListBox1Click(Sender: TObject);
فار
mem:TSstream;
bmp:TBitmap;
يبدأ
مع Table1 القيام به
يبدأ
أولاً؛
في حين لا Eof تفعل
يبدأ
إذا FieldByName('Name').AsString=ListBox1.Items[ListBox1.ItemIndex] ثم
استراحة؛
التالي؛
نهاية؛
bmp:=TBitmap.Create;
mem:=CreateBlobStream(FieldByName('Data'),bmRead);
mem.Position:=0;
bmp.LoadFromStream(mem);
self.Image1.Picture.Assign(bmp);
bmp.Free;
mem.Free;
نهاية؛
نهاية؛
رمز البرنامج هو كما يلي:
الوحدة 1؛
واجهة
الاستخدامات
Windows، الرسائل، SysUtils، المتغيرات، الفئات، الرسومات، عناصر التحكم، النماذج،
مربعات الحوار، StdCtrls، DB، DBTables، mmsystem، ExtCtrls؛
يكتب
TForm1 = الفئة (TForm)
ListBox1: TListBox؛
الجدول 1: الجدول؛
Image1: تيماج؛
الإجراء FormCreate(Sender: TObject);
الإجراء ListBox1Click(Sender: TObject);
خاص
{تصريحات خاصة}
عام
{التصريحات العامة}
نهاية؛
فار
Form1: TForm1؛
تطبيق
{$R *.dfm}
الإجراء TForm1.FormCreate(Sender: TObject);
فار
mem:TMemoryStream;
يبدأ
إذا Table1.Eof وTable1.Bof ثم
يبدأ
مع Table1 القيام به
يبدأ
إدراج؛
FieldByName('Name').AsString:='Bird';
mem:=TMemoryStream.Create();
mem.LoadFromFile('bird.bmp');
TblobField(FieldByName('Data')).LoadFromStream(mem);
بريد؛
إدراج؛
FieldByName('Name').AsString:='Sample';
mem:=TMemoryStream.Create();
mem.LoadFromFile('sample.bmp');
TblobField(FieldByName('Data')).LoadFromStream(mem);
بريد؛
إدراج؛
FieldByName('Name').AsString:='leaf';
mem:=TMemoryStream.Create();
mem.LoadFromFile('leaf.bmp');
TblobField(FieldByName('Data')).LoadFromStream(mem);
بريد؛
إدراج؛
FieldByName('Name').AsString:='Lotus';
mem:=TMemoryStream.Create();
mem.LoadFromFile('Lotus.bmp');
TblobField(FieldByName('Data')).LoadFromStream(mem);
بريد؛
mem.Free;
نهاية؛
نهاية؛
مع Table1 القيام به
يبدأ
أولاً؛
في حين لا Eof تفعل
يبدأ
ListBox1.Items.Add(FieldByName('Name').AsString);
التالي؛
نهاية؛
نهاية؛
نهاية؛
الإجراء TForm1.ListBox1Click(Sender: TObject);
فار
mem:TSstream;
bmp:TBitmap;
يبدأ
مع Table1 القيام به
يبدأ
أولاً؛
في حين لا Eof تفعل
يبدأ
إذا FieldByName('Name').AsString=ListBox1.Items[ListBox1.ItemIndex] ثم
استراحة؛
التالي؛
نهاية؛
bmp:=TBitmap.Create;
mem:=CreateBlobStream(FieldByName('Data'),bmRead);
mem.Position:=0;
bmp.LoadFromStream(mem);
self.Image1.Picture.Assign(bmp);
bmp.Free;
mem.Free;
نهاية؛
نهاية؛
نهاية.
احفظ الملف، ثم اضغط على المفتاح F9 لتشغيل البرنامج. تظهر الشاشة الأولية للبرنامج في الشكل 3.
بعد تحديد عنصر في مكون TListBox، سيتم عرض ملف الصورة المقابل، كما هو موضح في الشكل 4.
الشكل 3: الشاشة الأولية لتشغيل البرنامج