دلفي الاستكشاف العميق - قاعدة البيانات - مسح التحكم ActiveX
إن وظيفة تطوير قاعدة البيانات القوية هي بلا شك جوهرة تاج دلفي، حيث يستخدم 80% على الأقل من الأشخاص دلفي لتطوير برامج قواعد البيانات كل يوم. استنادًا إلى عنصر التحكم في قاعدة بيانات VCL، بالإضافة إلى عناصر التحكم القوية الواضحة في قاعدة بيانات الطرف الثالث التي توفرها شركات مثل Dev ExPRess وWoll2Woll، ليس من المبالغة القول إننا نحتاج فقط إلى تعيين الخصائص وسحب الماوس عدة مرات لاستكمال تطوير قاعدة البيانات بسرعة كبيرة. نظرًا لأن وظيفة قاعدة بيانات دلفي قوية جدًا، يتجاهل العديد من الأشخاص حقيقة أن ActiveX يمكنه أيضًا توفير ربط مرن لقاعدة البيانات. ولسوء الحظ، لا يعد أي من عناصر تحكم ActiveX التابعة لجهات خارجية والتي توفرها دلفي نفسها تحكمًا في قاعدة البيانات، مما أدى بشكل غير مباشر إلى سوء فهم مما جعل العديد من الأشخاص يعتقدون خطأً أن دلفي لا تدعم عناصر تحكم ActiveX ببيانات واضحة (بما في ذلك أنا منذ وقت طويل). وهذه بالطبع وجهة نظر خاطئة. استخدام عنصر تحكم ActiveX لمسح البيانات في دلفي في المثال التالي، سوف نستخدم عنصر تحكم Microsoft Calendar 9.0 المثبت في النظام مع Office 2000 للتوضيح، وهو عنصر تحكم لمسح البيانات. حدد المكون |. قم باستيراد عنصر تحكم ActiveX، وحدد Microsoft Calendar 9.0 (انظر الشكل 1.12 أدناه)، وقم بتغيير اسم الفئة من TCalendar إلى TAXCalendar لتجنب التعارض مع عنصر التحكم الأصلي الذي يحمل نفس الاسم في النظام، ثم انقر فوق الزر "تثبيت" لتثبيت هذا. يتحكم.
إنشاء برنامج جديد ووضع عنصر تحكم TAXCalendar في النموذج. وضع مصدر بيانات آخر وعنصر تحكم الجدول. قم بتعيين مجموعة البيانات DataSource إلى Table1، ثم قم بتعيين الخاصية DataBaseName الخاصة بالجدول1 إلى DBDEMOS، والخاصية TableName إلى EMPLOYEE.DB، ثم قم أخيرًا بتعيين الخاصية Table1.Active إلى True. بعد ذلك، حان الوقت لربط قاعدة البيانات. لاحظ أن TAXCalendar الذي تم تقديمه له خاصيتين، DataSource وDataBindings، اللتين تختلفان عن عنصر تحكم ActiveX العام، وذلك لأن معالج استيراد ActiveX يحدد أولاً ما إذا كان عنصر تحكم مناسبًا لقاعدة البيانات قبل تقديمه عنصر تحكم ActiveX إذا كان الأمر كذلك، فاستخدم TDBOleControl كفئة أساسية للتوريث. إذا لم يكن الأمر كذلك، فاستخدم TOleControl. يقوم TDBOleControl بتنفيذ خصائص DataBindings وDataSource. قم بتعيين الخاصية AXCalendar1.DataSource إلى Datasource1. في هذا الوقت، إذا نقرنا بزر الماوس الأيمن فوق عنصر التحكم TAXCalendar في النموذج، فسنجد عنصر قائمة DataBindings إضافي... في قائمة النقر بزر الماوس الأيمن (انظر الشكل 1.13 أدناه).
بعد النقر فوق عنصر القائمة، سيتم عرض مربع تحرير سمة ربط البيانات (انظر الشكل 1.14 أدناه). حدد HireDate في مربع القائمة FieldName، وحدد Value(12) في مربع القائمة Property Name (12 هو رقم Dispid للقيمة)، ثم انقر فوق الزر Bind لتأسيس اقتران بيانات بين حقل قاعدة البيانات وخاصية القيمة.
وأخيراً، ضع عنصر تحكم DBGrid وDBNavigator في النموذج، وقم بتعيين DataSource الخاص بهم إلى DataSource1. عند تشغيل البرنامج ونقل موضع البيانات الحالي، يمكنك ملاحظة أن عرض التاريخ في ActiveX سيتغير أيضًا وفقًا لذلك، بما يتوافق مع Hiredate في قاعدة البيانات. كما هو مبين في الشكل 1.15:
إنشاء عناصر تحكم ActiveX لمسح البيانات على الرغم من أننا نعرف بالفعل أن دلفي يمكنها بالفعل استخدام عناصر تحكم ActiveX لمسح البيانات، إلا أن هناك سؤالًا جديدًا ينشأ. هل تستطيع دلفي نفسها إنشاء عناصر تحكم ActiveX لمسح البيانات؟ بما أن دلفي توفر تحويلًا في خطوة واحدة وإنشاء عناصر تحكم ActiveX، يأمل العديد من الأشخاص في تحويل عناصر تحكم قاعدة البيانات القوية في دلفي إلى عناصر تحكم ActiveX حتى يتمكنوا من الاستمتاع بنفس التجربة كما في دلفي عند تطوير برامج قواعد البيانات في بيئات تطوير أخرى تدعم ActiveX. نفس الشعور بالاسترخاء والسعادة . ولكن كما ذكرت في الجزء الأول، نظرًا لأن الآلية الداخلية للتحكم في مسح البيانات في دلفي تختلف كثيرًا عن آلية التحكم في قاعدة بيانات ActiveX، فإن دلفي لا يمكنها ببساطة تحويل التحكم القوي في قاعدة البيانات الخاصة بها بشكل مباشر. هل هذا يعني أنه لا يوجد شيء يمكننا القيام به؟ بالطبع لا! في الواقع، باستخدام محرر مكتبة النوع، يمكننا تنفيذ عنصر تحكم ActiveX ببيانات واضحة بسهولة بالغة. حدد أمر القائمة جديد |. عنصر تحكم ActiveX |. ActiveX Control لبدء معالج تحويل عنصر تحكم ActiveX، وحدد عنصر تحكم TEdit ككائن تحويل، وقم بإنشاء إطار عمل EditX ActiveX. بعد ذلك، سنقوم بتحويل خاصية النص الخاصة بـ TEdit لدعم ربط البيانات. حدد عرض |. اكتب مكتبة لعرض مكتبة النوع التي تم إنشاؤها بواسطة دلفي، حدد خاصية النص، ثم قم بالتبديل إلى صفحة خصائص العلامات (انظر الشكل 1.16 أدناه).
لاحظ أن هناك العديد من خانات الاختيار في صفحة خصائص الإشارات، بالنسبة لنا، نحن نهتم فقط بالخيارات المتعلقة بربط البيانات. وهي قابلة للربط، وقابلة للعرض، وقابلة للربط افتراضيًا، وقابلة للربط فوري، وخيارات طلب التحرير. بعد وضع علامة على خاصية على أنها قابلة للربط وربطها بحقل قاعدة بيانات، عندما يقوم المستخدم بتعديل الخاصية، سيقوم عنصر التحكم بإعلام قاعدة البيانات بأن القيمة قد تغيرت ويطلب من قاعدة البيانات تسجيل حالة التحديث تم تحديث السجل بنجاح. يشير الخيار Bindable إلى أن الخاصية تدعم ربط البيانات. إذا تم وضع علامة على الخاصية على أنها قابلة للربط، فسوف تقوم الخاصية بإعلام الحاوية الخاصة بها عندما تتغير قيمتها. يشير طلب التحرير إلى أن الخاصية تدعم رسائل إعلام OnRequestEdit، مما يسمح لعنصر التحكم بسؤال الحاوية عما إذا كان مسموحًا للمستخدم بتعديل قيمة الخاصية. العرض قابل للربط يعني أن الحاوية يمكنها أن تُظهر للمستخدم أن هذه الخاصية قابلة للربط. تعني القيمة الافتراضية القابلة للربط أنها السمة الافتراضية الوحيدة القابلة للربط لاستخدامها، يجب وضع علامة على السمة القابلة للربط في نفس الوقت. عند وضع علامة على "قابل للربط الفوري"، سيتم إخطار كافة التغييرات، ويجب تعيين علامتي "قابل للربط" و"طلب التحرير". بعد ذلك، نقوم بوضع علامة على خاصية النص الخاصة بعنصر تحكم EditX على أنها قابلة للربط، وقابلة للعرض، وقابلة للربط افتراضيًا، وطلب التحرير. ثم انقر فوق الزر "تحديث" لتحديث مكتبة النوع، ثم حدد في النهاية تشغيل |. تسجيل خادم ActiveX لتسجيل عنصر تحكم ActiveX. عند تقديم عنصر تحكم EditX ActiveX الجديد، ستجد أنه ينفذ بالفعل وظيفة ربط البيانات. وفيما يلي رسم تخطيطي 1.17 لتشغيل برنامج EditX الذي يستخدم مسح البيانات (يتم بالفعل تنفيذ وظيفة مسح بيانات ActiveX في Delphi بسيطة ورائعة، أليس كذلك؟