دورة دلفي فايرمونكي لصناعة تطبيقات قواعد البيانات على الاندرويد و الأيفون
هذا الدرس يدور حول قائمة المهام todo-list. إنه مشابه لاستخدام TListView للعرض والبحث المحلي
للبيانات، ولكن في هذه الحالة، سنستخدم قاعدة بيانات SQL وسنعرض البيانات للمستخدمة التي يستخدمها
LiveBindings. علاوة على ذلك، سنرى كيفية إنشاء محولات الإخراج لـ LiveBindings.
بسم الله نبدأ القسم الأول من الدورة
💻💻عندما تحتاج إلى قاعدة بيانات متنقلة، لديك خياران في دلفي: SQLite (مصدر مفتوح
قاعدة لقواعد البيانات المضمنة) وInterBase ToGo.
منذ الإصدار XE6، قام RAD Studio بتضمين إصدارات InterBase ToGo وIBLite لتطوير تطبيقات قواعد البيانات المضمنة
. يمكنك نشر تطبيقات الهاتف المحمول الخاصة بك على أجهزة iOS أو Android
مع ترخيص InterBase ToGo (مقابل تكلفة) أو ترخيص IBLite (مجانًا).
إذا كان تطبيقك أكثر تعقيدًا بعض الشيء؛ يحتاج إلى تشفير أو إجراءات مخزنة أو عدد من البيانات
الأرقام الهامة، عليك بالتأكيد الذهاب إلى InterBase ToGo. بخلاف ذلك، يمكنك استخدام SQLite. يعتبر
أن IBLite هو نفس محرك InterBase ToGo، ولكنه محدود إلى حد ما. الحد الاكبر
هو عدم وجود التشفير. ومع ذلك، فإن التطبيق الذي يستخدم IBLite لا يتطلب تحديثات التعليمات البرمجية إذا كنت
تحتاج إلى التوسع في InterBase ToGo، قم بتغيير الترخيص وستكون بخير.
هذه الوصفة بسيطة جدًا من حيث متطلبات قاعدة البيانات، لذا سنستخدم SQLite. ومع ذلك،
تنطبق نفس المفاهيم على InterBase ToGo وIBLite.
افتح مشروع TODOlist.dproj. يحتوي النموذج الرئيسي على جميع المكونات المطلوبة
للوصول إلى قاعدة البيانات (في التطبيق الواقعي، فكر في استخدام وحدة بيانات لهذا الغرض، تمامًا مثل
تطبيقات سطح المكتب). تم إنشاء التطبيق باستخدام قالب الهاتف المحمول للرأس/التذييل.
يحتوي TabItem الأول على قوائم المهام، بينما يسمح لك TabItem الثاني بتحديث ملف
قائمة المهام الحالية أو إنشاء قائمة مهام جديدة.
عند بدء تشغيل التطبيق، تتصل مكونات TFDConnection بقاعدة البيانات. إذا
إذا كان ملف قاعدة البيانات غير موجود، فقد تم تكوين محرك SQLite لإنشاء ملف قاعدة بيانات جديد منه
من الصقر. هذه الميزة مفيدة جدًا ويمكن تهيئتها عن طريق تعيين خاصيةOpenMode
لإنشاءUTF8 . (يعد ترميز UTF8 دائمًا الخيار الأفضل للملفات الدولية
التطبيقات؛ في هذه الحالة، هذا هو الإعداد الافتراضي لمكونات TFDConnection.) هنا
الجزء ذو الصلة من خواصTFDConnection.
مشكلة أخرى يجب حلها تتعلق بمسار قاعدة البيانات. في Windows، يمكنك تطوير
تطبيق الهاتف المحمول باستخدام هدف Windows 32 بت ومسار محلي على نظامك؛ لكن،
عند تشغيل التطبيق على الجهاز، عليك استخدام مسار آخر. كيف يمكننا حل هذا؟ في ال
معالج الأحداث BeforeConnect الخاص بالاتصال، خذ بعين الاعتبار الكود التالي:
procedure TMainForm.ConnectionBeforeConnect(Sender: TObject);
begin
{$IF DEFINED(IOS) or DEFINED(ANDROID)}
Connection.Params.Values['Database'] :=
TPath.GetDocumentsPath + PathDelim + 'todos.sdb';
{$ENDIF}
end;
باستخدام هذا الرمز، سيتم إنشاء قاعدة البيانات في مجلد المستندات المناسب لنظام التشغيل iOS أو Android.
المشكلة التالية تتعلق ببنية قاعدة البيانات. متى وكيف نقوم بإنشاء الجدول
هذا مانحتاج إليه؟ دعونا نتحقق من معالج الأحداث AfterConnect على الاتصال:
procedure TMainForm.ConnectionAfterConnect(Sender: TObject);
begin
Connection.ExecSQL('CREATE TABLE IF NOT EXISTS TODOS( ' +
' ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, ' +
' DESCRIPTION CHAR(50) NOT NULL, ' +
' DONE INTEGER NOT NULL ' +
')');
qryTODOs.Active := True;
end;
بعد إنشاء قاعدة البيانات مباشرة، وفي أي تشغيل لاحق، يحاول التطبيق إنشاء ملف
جدول قاعدة البيانات إذا لم يكن موجودًا بعد. ثم افتح مجموعة البيانات المتصلة بمصدر الربط
إظهار البيانات الموجودة. تم تكوين عرض القائمة بالكود التالي:
ItemAppearance.ItemAppearance = 'ListItemRightDetail'
ItemAppearance.ItemHeight = 100
SearchVisible = True
تحتوي علامة التبويب الثانية على عناصر مكون TMemo ومكون TSwitch ومكون TLabel
. مصدر بيانات TBindSourceDB المتصل بمجموعة بيانات qryTODO هو
متصل بالقائمة ومكون التفاصيل الموجود في TabItem الثاني أيضًا.
يظهر هذا في لقطة الشاشة التالية (مدمج مع بعض النصوص التوضيحية):
تم تسجيل محول الإخراج هذا في