السلام عليكم ورحمة الله وبركاته
قد يجد البعض متاعب كثيرة عند استعمال أداوت تحكم ما كـActivex في اختلاف الاصدارات الموجودة من جهاز إلى آخر وكمثال : فانه عند استعمال الأداة Shockwave المخصصة لقراءة ملفات الفلاش فان عنصر التحكم هذا لن يكون مربوط بملف ثابت لتعدد اصدرات الملف من جهاز إلى آخر ولذلك نجد الكثير يقوم بارفاق الأداة التي أنشأ معها المشروع لكي تعمل بدون مشاكل
لكن هناك حل يمكننا به تجاوز هذه المشكلة بجعل أداة التحكم المنشئة مستقلة عن الأكتف أكس كملف
لكن قبل التطرق للتفاصيل دعونا نلقي نظرة إلى كيفية انشاء أداوات تحكم بشكل آلي أثناء التنفيذ
كمثال أولي نضيف زر إلى الفورم ونحدد حدث الضغط عليه
Dim WithEvents cmdMyCommand As VB.CommandButton
عرفنا كائن زر مع تحميل جميع أحداث الزر
يعني سنجد الكائن المعرف قد أصبح له نفس الأحداث للزر
Set cmdMyCommand = Controls.Add("VB.CommandButton", "ctlCommand1", Form1)
cmdMyCommand.Top = 50
cmdMyCommand.Left = 50
cmdMyCommand.Visible = Trueلآن قمنا بتحديد خصائص الكائن المنشئ والذي يمثل الزر وعند التشغيل سيتم اضافة هذا الزر على الفورم
معظم العناصر القياسية لها فئة مسماة بها مثلما رأينا قبل حول كائن CommandButton
يعني بنفس الطريقة فقط مع مراعاة استعمال WithEvents أثناء التعريف كي يتم استدعاء جميع أحداث الكائن المعرف منه
الشئ المهم أيضا هنا هي الفئة VBControlExtender تخص باقي عناصر التحكم الأخرى والتعامل معها هنا يختلف في تسيير الأحداث لانها تكون أحداث قياسية ويمكننا أن نعرف أي عنصر باستخدام هذه الفئة ونتعامل معه ككائن لذلك كل الأحداث تتم مراقبتها في الحدث ObjectEvent
كمثال نريد ادراج أداة الفلاش إلى الفورم بدون اضافتها في الأداوت
نعرف كائن من الفئة VBControlExtender
Dim WithEvents Ctrl1 As VBControlExtender
ثم نقوم بالاضافة الآلية بالكود
Set Ctrl1 = Form1.Controls.Add("ShockwaveFlash.ShockwaveFlash", "flashplayer")
Ctrl1.Visible = True
Ctrl1.Width = 4935
Ctrl1.Height = 4575
Ctrl1.Left = 120
Ctrl1.Top = 120لكن لحد الآن لن نستطيع استغلال أداة الفلاش المنشئة آليا لان الكائن المنشئ لا يتيح لنا الوصول إلى خاصية تشغيل ملفات الفلاش وهذه الخاصية مهمة جدا
أين الحل إذا ؟؟ وكيف نصل إلى الخاصية LoadMovie ؟
بعد أن استطعنا إنشاء الأداة باستعمال الكائن المسجل في النظام والمخصص للأداة ShockwaveFlash بقي لنا كيفية استخدام الإجراء المتعلق بتحميل ملف الفلاش
طبعا وهذا أهم شئ
للوصول إلى استخدام الإجراء LoadMovie فعلينا أن نقوم باضافة الأداة من Componments
قد يسأل البعض هنا :
لماذا كل هذا التعب إذا مادمنا سنضيف الأداة ؟؟ :wub:
طبعا الأداة سنضيفها لكن لن نستعملها :D
لكن فقط علينا مراعاة شئ مهم جدا
الفيجوال بيسك عند انشائه للملف التنفيذي فانه يقوم إفتراضيا بازالة المعلومات المتعلقة بالأدوات الغير مستخدمة في البرنامج
قد تضيف مثلا أداة وينسوك عند التصميم لكنك اذا لم تستعملها فانه يقوم بازالة معلوماتها أثناء إنشاء الملف التنفيذي للكود
وهذه الخاصية يمكننا أن نقوم بتعطيلها
لاحظ أن الخاصية : Remove information about unused ActiveX Controls مفعلة افتراضيا
نقوم بتعطيلها بعد اضافة أداة الفلاش من الComponments لكن دون ادراجها على الفورم
بهذا فقط يمكننا الوصول إلى الإجراء LoadMovie للكائن الذي سيتم انشاؤه
ومن ناحية أخرى فان الملف التنفيذي المنشئ سيكون مستقلا عن أداة الفلاش الموجودة على الجهاز
يعني قد تكون الاداة موجودة في Flash.ocx أو Flash09b.ocx ...
لكن بهذه الطريقة فانه لا يهمنا ذلك :lol:
بهذا يمكننا أن نستعمل الدالة LoadMovie للأداة المنشئة برمجيا بدون حدوث أي مشكل
بالتوفيق للجميع

