إنشاء كائن
أسهل طريقة لإنشاء كائن هي النقر نقرًا مزدوجًا فوق عنصر التحكم الموجود في مربع الأدوات. ومع ذلك، لتحقيق الاستفادة الكاملة من كافة الكائنات المتوفرة في Visual Basic ومن التطبيقات الأخرى، يمكنك استخدام إمكانيات البرمجة الخاصة بـ Visual Basic لإنشاء كائنات في وقت التشغيل.
1. إنشاء مرجع الكائن مع متغير الكائن
2. استخدم وحدات الفصل لإنشاء كائناتك الخاصة "من الصفر"
3. قم بإنشاء مجموعتك الخاصة باستخدام كائنات المجموعة
يتم توفير تفاصيل حول كيفية الوصول إلى الكائنات في فصول أخرى. على سبيل المثال، تمت مناقشة وظائف CreateObject وGetObject في الفصل 10، "البرمجة باستخدام المكونات".
استخدام متغيرات الكائن
بالإضافة إلى تخزين القيم، يمكن للمتغيرات الرجوع إلى الكائنات. تمامًا مثل إسناد قيمة إلى متغير، يمكنك إسناد كائن إلى متغير لنفس الأسباب:
1. تميل أسماء المتغيرات إلى أن تكون أقصر وأسهل في التذكر من القيم التي تحتوي عليها (أو في هذه الحالة، الكائنات التي تشير إليها).
2. عند تشغيل التعليمات البرمجية، يجب تغيير المتغيرات للإشارة إلى كائنات أخرى.
3. تعد الإشارة إلى المتغير الذي يحتوي على الكائن أكثر كفاءة من الإشارة المتكررة إلى الكائن نفسه.
استخدام متغيرات الكائن هو نفس استخدام المتغيرات العادية، باستثناء أن هناك خطوة إضافية تتمثل في إسناد الكائن إلى المتغير:
4. أعلن أولاً عن المتغيرات:
DimvariableAsclass
5. ثم قم بتعيين الكائن للمتغير:
Setvariable=object
قم بتعريف متغيرات الكائن
طريقة الإعلان عن متغيرات الكائنات هي نفس طريقة الإعلان عن المتغيرات الأخرى، باستخدام Dim وReDim وStatic وPRivate وPublic. والفرق الوحيد هو الكلمة الأساسية الجديدة ومعلمات الفئة الاختيارية، والتي سيتم تقديمها لاحقًا في هذا الفصل. بناء الجملة هو:
{Dim|ReDim|Static|Private|Public}متغير كفئة[جديدة].
على سبيل المثال، يمكنك تعريف متغير كائن يشير إلى نموذج في تطبيقك يسمى frmMain:
DimFormVarAsNewfrmMain 'قم بتعريف النوع كـ frmMain
'متغير الكائن.
يمكنك أيضًا الإعلان عن متغير كائن يشير إلى أي نموذج في تطبيقك:
DimanyFormAsForm 'متغيرات النموذج العامة.
وبالمثل، يمكنك الإعلان عن متغير كائن يمكنه الإشارة إلى أي مربع نص في تطبيقك:
DimanyTextAsTextBox 'يمكن أن يشير إلى أي مربع نص
'(ولكن فقط مربع نص).
يمكنك أيضًا الإعلان عن متغير كائن، والذي يمكن أن يشير إلى أي نوع من التحكم:
DimanyControlAsControl 'متغيرات التحكم العامة.
لاحظ أنه يمكنك الإعلان عن متغير نموذج يشير إلى نموذج محدد في تطبيقك، لكن لا يمكنك الإعلان عن متغير تحكم يشير إلى عنصر تحكم محدد. يمكنك تعريف متغير تحكم يشير إلى نوع معين من عناصر التحكم (مثل TextBox أو ListBox)، ولكن ليس عنصر تحكم محدد من هذا النوع (مثل txtEntry أو List1). ومع ذلك، يمكن تعيين ضوابط محددة لمتغيرات من هذا النوع. على سبيل المثال، يمكن ترميز النموذج الذي يحتوي على مربع قائمة lstSample على النحو التالي:
DimobjDemoAsListBox
SetobjDemo=lstSample
متغير كائن المهمة
استخدم عبارة Set لتعيين الكائن لمتغير الكائن:
Setvariable=object
عندما تريد أن يشير متغير كائن إلى كائن، يمكنك استخدام عبارة Set.
في بعض الأحيان يمكنك استخدام متغيرات الكائن، وخاصة متغيرات التحكم، لتقصير التعليمات البرمجية التي تكتبها مباشرة. على سبيل المثال، يبدو الرمز الأصلي كما يلي:
IffrmAccountDisplay!txtAccountBalance.Text<0ثم
frmAccountDisplay!txtAccountBalance.BackColor=0
frmAccountDisplay!txtAccountBalance.ForeColor=255
EndIf
إذا كنت تستخدم متغيرات التحكم، فيمكن اختصار برنامجك بشكل كبير:
DimBalAsTextBox
SetBal=frmAccountDisplay!txtAccountBalance
IfBal.Text<0ثم
لون الظهر = 0
اللون الأمامي = 255
EndIf
أنواع الكائنات المحددة مقابل أنواع الكائنات العامة
يجب أن يشير متغير كائن معين إلى نوع معين من الكائنات أو الفئة. يمكن لمتغير نموذج محدد أن يشير إلى نموذج واحد فقط في التطبيق (على الرغم من أنه يمكن الرجوع إليه في إحدى المثيلات العديدة لهذا النموذج). وبالمثل، يمكن لمتغير تحكم محدد أن يشير فقط إلى نوع معين من التحكم في التطبيق، مثل TextBox أو ListBox. الرجاء الاطلاع على مثال وفتح مشروع جديد ووضع مربع نص في النموذج. أضف الكود التالي إلى النموذج:
PrivateSubForm_Click()
DimanyTextAsTextBox
SetanyText=Text1
AnyText.Text=مرحبا
EndSub
قم بتشغيل التطبيق وانقر على النموذج. ستتغير خاصية النص في مربع النص إلى مرحبًا.
يمكن أن تشير متغيرات الكائنات العامة إلى أحد أنواع الكائنات المحددة المتعددة. على سبيل المثال، يمكن لمتغير النموذج العام الإشارة إلى أي نموذج في التطبيق؛ ويمكن لمتغير التحكم العام الإشارة إلى أي عنصر تحكم في أي نموذج في التطبيق. يرجى الاطلاع على مثال، وفتح مشروع جديد ووضع العديد من عناصر التحكم في الإطار والتسمية وCommandButton بأي ترتيب في النموذج. أضف الكود التالي إلى النموذج:
PrivateSubForm_Click()
DimanyControlAsControl
SetanyControl=Form1.Controls(3)
AnyControl.Caption=Hello
EndSub
قم بتشغيل البرنامج وانقر على النموذج. سيتم تغيير عنوان عنصر التحكم الثالث الذي قمت بوضعه للتو في النموذج إلى مرحبًا.
هناك أربعة كائنات عامة في Visual Basic:
تعد متغيرات الكائنات العامة مفيدة عندما لا يكون معروفًا في وقت التشغيل ما إذا كان المتغير يشير إلى كائن من نوع معين. على سبيل المثال، إذا كنت تريد كتابة تعليمات برمجية تعمل على أي نموذج في تطبيقك، فيجب عليك استخدام متغيرات النموذج العامة.
لاحظ أنه بما أنه يمكن أن يكون هناك نموذج MDI واحد فقط في التطبيق، فليس من الضروري استخدام نوع MDIForm العام. عندما تحتاج إلى تعريف متغير نموذج يشير إلى نموذج MDI، يمكنك استخدام نوع MDIForm محدد (إما MDIForm1، أو أي اسم تحدده في خاصية اسم نموذج MDI) بدلاً من نوع MDIForm العام. في الواقع، يجب عليك دائمًا استخدام نوع MDIForm محدد لأن Visual Basic يمكنه تحديد الخصائص والأساليب التي تشير إلى نوع نموذج معين قبل تشغيل التطبيق.
يتم توفير نوع MDIForm العام فقط للاكتمال، وسيكون من المفيد في الإصدارات المستقبلية من Visual Basic أن يكون لديك نماذج MDI متعددة في تطبيق واحد.
شكل ككائن
تُستخدم النماذج بشكل شائع لإنشاء واجهات التطبيقات، ولكنها غالبًا ما تكون أيضًا كائنات يتم استدعاؤها بواسطة وحدات نمطية أخرى في التطبيق. ترتبط النماذج ارتباطًا وثيقًا بوحدات الفصل. والفرق الرئيسي بين الاثنين هو أن النماذج هي كائنات مرئية، في حين أن وحدات الفصل ليس لها واجهة مرئية.
إضافة أساليب وخصائص مخصصة
يمكن إضافة الأساليب والخصائص المخصصة إلى النموذج والوصول إليها من الوحدات النمطية الأخرى في التطبيق. لإنشاء أساليب جديدة لنموذج، قم بإضافة إجراء تم تعريفه بواسطة Public.
'طريقة تخصيص Form1.
PublicSubLateJobsCount()
.
"<البيانات>."
.
EndSub
يمكن استدعاء الإجراء LateJobsCount من وحدات أخرى باستخدام العبارة التالية:
Form1.LateJobsCount
يعد إنشاء خصائص جديدة لنموذج أمرًا بسيطًا مثل الإعلان عن متغير عام في وحدة النموذج:
PublicIDNumberAsInteger
يمكن استخدام العبارتين التاليتين لتعيين وإرجاع قيمة IDNumber للنموذج 1 من الوحدات النمطية الأخرى:
Form1.IDNumber=3
Text1.Text=Form1.IDNumber
يمكنك أيضًا استخدام إجراء الخاصية لإضافة خصائص مخصصة إلى نموذج.
التفاصيل يوفر الفصل 9، "البرمجة باستخدام الكائنات،" مادة مفصلة حول إجراء الخاصية.
لاحظ أنه يمكنك استدعاء متغيرات النموذج أو الأساليب المخصصة دون تحميل النموذج، كما يمكنك أيضًا تعيين الخصائص المخصصة للنموذج. ونتيجة لذلك، يمكنك تشغيل التعليمات البرمجية حول النموذج دون تحميله في الذاكرة. وبالمثل، فإن الرجوع إلى عنصر تحكم دون الرجوع إلى خصائصه أو أساليبه لن يؤدي إلى تحميل النموذج.
استخدم الكلمة الأساسية الجديدة
استخدم الكلمة الأساسية الجديدة لإنشاء كائن جديد، والذي يتم التعامل معه على أنه الكائن المحدد بواسطة فئته. يمكن استخدام الجديد لإنشاء مثيلات للمجموعات والنماذج والفئات المحددة في وحدات الفصل الدراسي.
استخدم الكلمة الأساسية الجديدة في نموذج
النماذج التي تم إنشاؤها في وقت التصميم هي فئات. يمكن إنشاء مثيلات جديدة لهذه الفئة باستخدام الكلمة الأساسية الجديدة. لرؤية هذه العملية أثناء التنفيذ، ارسم زر أمر والعديد من عناصر التحكم الأخرى في النموذج. في نافذة الخصائص، قم بتعيين خاصية اسم النموذج إلى نموذج. أضف التعليمة البرمجية التالية في إجراء حدث النقر لزر الأمر:
DimxAsNewSample
x.إظهار
قم بتشغيل التطبيق وانقر فوق زر الأمر عدة مرات. حرك النموذج الأمامي جانبًا. نظرًا لأن النموذج عبارة عن فئة ذات واجهة مرئية، فستكون النسخ الإضافية مرئية. يحتوي كل نموذج على نفس عناصر التحكم في نفس المواقع التي تم تصميم النموذج فيها.
لاحظ أنه لكي تكون متغيرات النموذج ومثيلات النماذج المحملة موجودة دائمًا، استخدم المتغيرات الثابتة أو العامة بدلاً من المتغيرات المحلية.
يمكنك أيضًا استخدام الكلمة الأساسية الجديدة مع عبارة Set. الرجاء تجربة الكود الموجود في إجراء حدث النقر لزر الأمر:
ديمفاسفورم1
Setf=NewForm1
f.Caption=مرحبا
و.عرض
سيؤدي استخدام الكلمة الأساسية الجديدة مع عبارة Set إلى تسريع عملية التنفيذ، لذا يوصى بهذه الطريقة.
استخدم الكلمة الأساسية الجديدة مع كائنات أخرى
يمكنك استخدام الكلمة الأساسية الجديدة لإنشاء مجموعات وكائنات من الفئات المحددة في وحدة نمطية للفئة. استخدم المثال التالي لتوضيح عملية العمل هذه.
يوضح هذا المثال كيف تقوم الكلمة الأساسية الجديدة بإنشاء مثيل للفئة. افتح مشروعًا جديدًا وارسم عنصر تحكم CommandButton على Form1. حدد الأمر Add Class Module من قائمة Project لإضافة وحدة نمطية للفئة إلى المشروع. قم بتعيين خاصية الاسم لوحدة الفئة على ShowMe.
التعليمة البرمجية التالية في Form1 تنشئ مثيلًا جديدًا للفئة ShowMe وتستدعي الإجراء الموجود في الوحدة النمطية للفئة.
PublicclsNewAsShowMe
PrivateSubCommand1_Click()
SetclsNew=NewShowMe
clsNew.ShowFrm
EndSub
يقوم الإجراء ShowFrm الموجود في الوحدة النمطية للفئة بإنشاء مثيل جديد للفئة Form1، ويعرض النموذج، ثم يقوم بتصغيره.
SubShowFrm()
ديمفرمنيوأسفورم1
SetfrmNew=NewForm1
frmNew.Show
frmNew.WindowState=1
EndSub
لتطبيق هذا المثال، قم بتشغيل التطبيق ثم انقر فوق زر الأمر عدة مرات. ستشاهد رمز نموذج مصغر يظهر على سطح المكتب عند إنشاء كل مثيل جديد لفئة ShowMe.
لمزيد من المعلومات حول استخدام الجديد لإنشاء الكائنات، راجع الفصل 10، "البرمجة باستخدام المكونات".
قيود الكلمات الرئيسية الجديدة
يشرح الجدول التالي ما لا يمكنك فعله بالكلمة الأساسية الجديدة.
حرر المرجع إلى الكائن
يستخدم كل كائن الذاكرة وموارد النظام. يعد من ممارسات البرمجة الجيدة تحرير هذه الموارد فورًا عندما لا يتم استخدام الكائن.
استخدم Unload لإلغاء تحميل نموذج أو عنصر تحكم من الذاكرة.
لا تستخدم أي شيء لتحرير الموارد التي تشغلها متغيرات الكائن. استخدم عبارة Set لتعيين لا شيء لمتغير الكائن.
لمزيد من المعلومات، الرجاء الرجوع إلى قسمي "إلغاء تحميل الحدث" و"لا شيء" في "دليل مرجع لغة Visual Basic 6.0".
تمرير الكائن إلى الإجراء
يمكن تمرير الكائنات إلى الإجراءات في Visual Basic. في مثال التعليمات البرمجية التالي، من المفترض أن النموذج يحتوي على عنصر تحكم CommandButton:
PrivateSubCommand1_Click()
"اتصل بالروتين الفرعي التجريبي وقم بتمرير النموذج إليه."
النموذج التجريبي1
EndSub
PrivateSubDemo(xAsForm1)
'توسيط النموذج على الشاشة.
x.Left=(Screen.Width-x.Width)/2
EndSub
يمكنك تمرير كائن إلى معلمة حسب المرجع ثم تعيين المعلمة إلى كائن جديد ضمن الإجراء. لرؤية ذلك عمليًا، افتح المشروع وأدرج نموذجًا ثانيًا. ضع مربع صور في كل شكل. قيم إعدادات السمات التي تحتاج إلى تغيير هي كما هو موضح في الجدول التالي:
إجراء الحدث Form1_Click يستدعي الإجراء GetPicture في Form2 ويمرره إلى مربع صورة فارغ.
PrivateSubForm_Click()
Form2.GetPicturePicture1
EndSub
تقوم عملية GetPicture في Form2 بتعيين خاصية الصورة لمربع الصورة في Form2 إلى مربع الصورة الفارغ في Form1.
PrivateobjXapictureBox
PublicSubGetPicture(xAsPictureBox)
'قم بتعيين إطار الصورة الذي تم تمريره إلى متغير الكائن.
SetobjX=x
'قم بتعيين قيمة سمة الصورة إلى مربع الصورة في Form1.
objX.Picture=picture2.Picture
EndSub
لتطبيق هذا المثال، قم بتشغيل البرنامج ثم انقر فوق Form1. ستشاهد الرمز الموجود في Form2 يظهر في مربع الصورة الخاص بـ Form1.
التفاصيل تهدف المواضيع المذكورة أعلاه إلى تقديم نظرة عامة على الكائنات. لمزيد من التفاصيل، راجع الفصل 9، "البرمجة باستخدام الكائنات" والفصل 10، "البرمجة باستخدام المكونات".
->