الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الاحداث

مغلق
بدأه asi-tojprogrammer في 10 أبريل 2007 · 11 رد · 3,057 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الاحداث :

الاحدث هي التي يستجيب لها برنامج فيجول بيسيك ولولاوجودها لما استطعنا ان نحدد للبرنامج متى ينفذ الامر الذي نريدة انة ينفذة فمثل

load اي عند وقوع الحدث

name الشرح

active يقع بعد تحميل النافذة اي بعد وقوع حدث load

click عند النقر المفرد على الفارة

dbclick عند النقر المزدوج على الفارة

gotfocus عند اخذ التركيز لاداة معينة

lostfocus عند فقد التركيزلاداة معية

keydown عند نزول الزر الى الاسفل

keypress عند الضغط على اي زر من لوعة المفاتيح

keyup عند طلوع زر لوعة المفاتيح الى الاعلى

load عند تحميل النافذة الرئيسية

mousedown عند نزول زر الفارة الى الاسفل

mousemove عن تحرك الفارة على اداة معينة

mouseup عند طلوع زر الفارة الى الاعلى

paint عند اعادة رسم النافذة

resize عند تغير حجم النافذة

unload عند الغاء تحميل النافذة

goku.jpg
#2

شكرا لك على الموضوع

بس ياريت تدعم موضوعك بشوية أمثلة عملية حتى تكمل الفائدة لإخوانك في المنتدى

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#3

اعتقد الحدث الأخير موجود فقط في فيجوال بيسك 6 وماقبلها اما في الدوت نت 2005 فموجود

closed

closing

حدثين

الاول يحدث بعد اغلاق الفورم

والثاني يحدث اثناء اغلاقها

<span style='color:green'>سؤل ابن عباس عن علمه كيف جمعه فقال :( أوتيت لسانا سؤولا وقلبا عقولا)</span>

#4

شكرا على الردور ، و شكرا لملاحظة الاخ سامر سوف اعطي مثالا عن الحدث KeyPress ، هذا الكود سيقوم بجعل مفتاح Tab يعمل بدلا من مفتاح Enter

Private Sub Form_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

SendKeys "{TAB}"

KeyAscii = 0

End If

End Sub
goku.jpg
#5

احسنت

ولكن

هل لك أن تشرح لنا كيف نستطيع تعريف احداث خاصه بنا

مثلا لو أنني أريد أن أبرمج سياره كيف يمكن أن أعرف لها حدث مثلا تشغيل السياره

وهل لديك طريقه كيف ان ننادي الاحداث

#6
Esam_rabba كتب:
احسنت

ولكن

هل لك أن تشرح لنا كيف نستطيع تعريف احداث خاصه بنا

مثلا لو أنني أريد أن أبرمج سياره كيف يمكن أن أعرف لها حدث مثلا تشغيل السياره

وهل لديك طريقه كيف ان ننادي الاحداث

طلبك بإطلاق أحداثك الخاصة موجود سابقا في المنتدى انظر الموضوع معلومة: كيف تستطيع إطلاق أحداثك الخاصة صحيح أن الشرح في الموضوع المذكور موجود من أيام الـ 2003 ولكنه ينطبق تماما على الـ 2005 أيضا

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 12 أبريل 2007 في 22:25

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#7

جزاك الله خير استاذي الفاضل محمد سامر

أضيف على معلومات استاذنا :

أنه توجد طريقتان لاستدعاء الاحداث

الطريقة الاولى وهي استدعاء الحدث عن طريقه تعريفه بالعبارة withevents عند تعريف الصنف وهذه الطريقة لها مميزات وعيوب فمن مميزاتها أنه عند تعريفك للمتغير بالعبارة withevent مثلا

dim cls withevents as new class1

سيقوم البرنامج تلقائيا باضافة الحدث في القائمة الخاصة بالاحداث في اعلى النافذة ومن عيوبها انه لايمكنك أنشاء مصفوفة عند تعريف المتغير أي مثلا

dim cls(5) withevents as class1

كذلك لتعلم أن هذه الطريقة تتعامل مع مؤشر الكائن أي مع المتغير وليس مع الكائن نفسه أي أنه عندما يموت المتغير فلايمكنك التعامل معه بهذه الطريقة واقصد بذلك بالموت المنطقي وليس الحقيقي أي ان المتغير عندما تسند له القيمة nothing سوف يموت منطقيا أي انه لايمكن التعامل معه ولكن توجد بياناته مخزنة في الذاكرة .

الطريقة الثانية :استخدام الطريقة addhandler وصيغتها كالتالي:

addhandler  class.testevent,addressof testsub

وفي هذه الحالة يجب عليه أنشاء الاجراء بنفسك واسناد الحدث له اي انه عندما يتم تفجير الحدث سيتم استدعاء هذا الاجراء وهذه الطريقة مفيدة في حالة انك تريد اخفاء بعض الاحداث عن المستخدم

طبعا سيكون الاجراء المستدعى طبيعي اي بدون استعمال الطريقة Handles بعد الوسائط أي تخيل يكون الاجراء هكذا

sub testsub(byval sender as object,e as eventargs)
msgbox("تم استدعاء الاجراء")
end sub

ومن مميزات كذلك هذه الطريقة انه يمكنك انشاء مصفوفة من المتغيرات فمثلاً لو قمنا بإنشاء مصفوفة من النوع class1

dim cls(5) as class1

طبعاً لايمكننا الان التعامل مع هذه المصفوفة ولو حاولنا لظهرلنا الرسالة المعروفة وهي

Object reference not set to an instance of an object

وربما هذه الرسالة تظهر لأغلب المبرمجين ولكن لايعروفون معناها او كيفية تجاوزها ومعناها باختصار أن الكائن المرجعي لم يحدد كنسخة من الكائن أي أن الكائن الذي قمت باسناد القيمة له لا يوجد نسخة جديدية منه أي باستخدام العبارة new ولذلك يجب انشاء نسخة من كل متغير من الكائن

لذلك بعد تعريف المصفوفة نقوم اولا بتعريف متغير خاص بالعداد وبعد ذلك نقوم بإنشاء نسخة من كل متغير

dim counter as integer=0
for counter=0 to cls.count-1
cls(counter)=new class1

وبعد ذلك نسند كل حدث للاجراء

addhandler cls(counter).testevent,addressof testsub

أو يمكننا اسناد كل حدث لكل اجراء محدد

addhandler cls(0).testevents,testsub0
addhandler cls(1).testevents,testsub1

وهكذا دواليك

وكذلك من مميزاته انه يتعامل مع الكائن نفسه عكس العبارة withevents والتي تتعامل مع مؤشر (متغير ) الكائن

هذا ماأردت أن أضيفه ولست أفضل من المشرف والاستاذ محمد سامر فهو معلمنا ومشرفنا الحبيب

والسلام عليكم ورحمة الله وبركاته

أخوكم ومحبك في الله أبوعزام

أنا الرجل الضرب الذي تعرفونه***خشاش كرأس الحية المتوقد

لوكنت وغلاً في الرجال لضرني**** حسن جرائتي ومقتدي

منتديات طريق الهداية

#8

بارك الله فيك أخ أبو عزام فعلا إضافة رائعة أغنت الموضوع

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#9

واياك أستاذي الفاضل محمد سامر فهذا واجبي

أنا الرجل الضرب الذي تعرفونه***خشاش كرأس الحية المتوقد

لوكنت وغلاً في الرجال لضرني**** حسن جرائتي ومقتدي

منتديات طريق الهداية

#10

احسنتما وجزاكما الله خيرا

ولكن

دعونا نتوسع في الموضوع أكثر فأكثر

الحمد لله لي الكثير من التجارب - بحكم عملي - مع الأحداث وطبيعة تكوينها وإظافتها او ربطها مع handler اما في الـ Run Time او في الـ Design Time

او حتى بربط الأحداث لأكثر من object يحملون مجموعه مشتركه من الصفات - وخصوصا في أحداث مشتركه - على Handler واحد

والآن صراحة أتوسع في هذا الموضوع على محورين الأول على مستوى قواعد البيانات وخصوصا في الـ SQL Server 2005

كما نعلم جميعنا أن هناك أكثر من خدمه قد أدرجت مع الـ SQL Server من بعد اصدرها في العام 2000 منها Notfication services

وهي خدمه قائمه على الاحداث داخل قواعد البيانات وتفصيلاتها كثير

أما المحور الآخر وهو المهم الآن هو في خدمات الإنترنت Web Services كما نعلم أن أي برنامج في الـ .Net أصبح عباره عن Class له صفات خاصه تختلف بإختلاف التطبيق

حتى الـ Web Services هي عباره عن Class تستطيع إدراج خصائص وMethods و Member Data وحتى يمكن إدراج أحداث بها تستطيع أن تشغلها بناءا على حلات يريدها المبرمج

ولكن ما زالت هناك مشكله في الـ Client side حيث أنه لا يستطيع الوصول لهذه الأحداث بالطريقه الإعتياديه في تعريف الـ objects والمدرج بها أحداث

لنفتح الموضوع للنقاش

الأخ العزيز محمد لا أدري أن كان هذا المكان هو المكان الصحيح لهذا الموضوع ولكن نحتاج لإرشاداتك ؟

وجزاكم الله خيرا

أخوكم

عصام رباع

#11

الأخ Esam_rabba

شكرا لك فعلا المنتدى بحاجة إلى مواضيع أكثر في هذه النقاط

ولكن

1 - بالنسبة للتوسع على مجال SQL Server من الأفضل ان تفتح موضوعا مستقلا في قسم ADO .net أو قسم SQL Server على حسب طبيعة الدرس الذي تود طرحه

2 - بالنسبة للتوسع على مجال Web Services من الأفضل أن تفتح موضوعا مستقلا في قسم ASP .net أو الشبكات

3 - دع هذا الموضوع للأمور المتعلقة بـ VB .net كلغة

ولا مانع من وضع وصلة لتلك المواضيع في تعقيب في هذا الموضوع حتى نجعل تكامل بين المواضيع المختلفة

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 14 أبريل 2007 في 23:33

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#12

ما شاء الله ايه الحلاوة دي يا شباب مشكور لصاحب الموضوع ومشكور ايضا للاخ ابو عزام فعلا افادنا بمعلوماته القيمة جزاه الله كل خير إن شاء الله

هذا الموضوع مغلق.

مواضيع مشابهة