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

[ تمت الإجابة ]الفصل بين ضغط Enter والحدث Click

بدأه Abboodd في 8 ديسمبر 2008 · 10 رد · 1,173 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

إخواني، الكل يعلم أن ضغطة Enter بالنسبة للـCommand Button تساوي في مفعولها الحدث Click، ولكن المشكلة أني أريد أن يقوم كل من الحدثين بأمر مختلف، مثلاً الحدث Click يقوم بـ Print "Hello" والحدث KeyPress(KeyAscii=13) بالأمر Print "Bye" وقد جربت وسائل عديدة، لكن دائماً يقع عند ضغط Enter ما يقع عند Click فما الحل؟

ولكم جزيل الشكر

هذه الجملة خاطئة  :wacko: 


#2

مرحبا

من الممكن يا أخي الكريم ان تخصص متغير في حدث

KEY DOWN وتعطيه قيمه في حالة الضغط على انتر asci code 13

وبهذا تفصل بين الطريقتين باستخدام شرط كـ IF

وشكراً

#3

شكراً أخي، ولكن يبدو أنّك لم تفهم السؤال جيداً، يمكنك أن تجرب:

Private sub Command1_Click()
Print "Hello"
End sub

Private sub Command1_KeyPress(KeyAscii as Integer)
IF KeyAscii = 13 then Print "Bye"
End sub

هنا ستجد أنّه لن يشعر أصلاً بالحدث KeyPress فما الحل؟

وشكراً مرة أخرى

هذه الجملة خاطئة  :wacko: 


#4

قم بإنشاء مشروع جديد وضع فيه Command1 ثم ضع هذا الكود بـ Form1


Private Sub Command1_Click()
If IsClicked Then
IsClicked = False
Exit Sub
End If

Print "Bye"
End Sub
Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Print "Hello"
End Sub
Dim IsClicked As Boolean

هذا إن أردت التفرقة بين اذا ضغط على الزر بالـ Mouse أو ان ضغط عليه بالـ Keyboard

وطبعا الـ Enter يعادل الضفط على المسافة

أما اذا اردت ان تفرق بين المسافة والـ Enter فعليك بالـ Sub Classing

اعتذر عن عدم تمكني للمتابعه الدورية في وقتنا الحالي

فليقبل الجميع تقديري واحترامي .. ولكم تحياتي

#5

شكراُ أخ mrx-ta7ady ولكن المشكلة هي أن الحدثين MouseDown و Click حدثان متعاقبان، فأنت عندما ستضغط سيحدث MouseDown وعندما سترفع سيحدث Click وسيطبع على الشاشة

Hello

Bye

بينما أريده هو أن يطبع Hello عندما أضغط Click، و Bye عندما أضغط Enter .

وشكراً لك أخي

هذه الجملة خاطئة  :wacko: 


#6

الكود الذي وضعه أخي mrx_ta7ady صحيح ، ولكن ينقصه سطر كي يعمل :

	IsClicked = True

ضع هذا السطر في MouseDown

سبحان الله وبحمده ... سبحان الله العظيم

#7

شكراً لكما، فعلاً تم حل المشكلة ولله الحمد.

هذه الجملة خاطئة  :wacko: 


#8
اقتباس
الكل يعلم أن ضغطة Enter بالنسبة للـCommand Button تساوي في مفعولها الحدث Click،
ضغطة المسطرة في الكيبورد هي التي تساوي في مفعولها الحدث Click للماوس شكلاً ومضموناً (ضعطة الأنتر تساويه مضموناً فقط وليس شكلا)

والسؤال للجميع ،هل يمكن إلغاء واستبدال ضغطة المسطرة بضغطة مفتاح الإنتر شكلاً ومضموناً مع الحدث Click لزر الكوماند العادي نفسه

#9

أولا اسف على الخطأ الغير مقصود بالنسبة للسطر الناقص .. قمت باستبداله بالخطأ حين إعتماد الرد ولم انتبه :)

عبد العزيز اليوسفي كتب:
هل يمكن إلغاء واستبدال ضغطة المسطرة بضغطة مفتاح الإنتر شكلاً ومضموناً مع الحدث Click لزر الكوماند العادي نفسه

أعتقد انه مينفعش .. مرفق مثال يقوم بإرسال الزر المدخل إلى نافذة الـ Immediate بثلاثة طرق

الـ KeyDown للـ Command والـ KeyDown للـ Form والـ KeyDown بالـ SubClass

من وجهة نظري يجب إستبدال الـ KeyCode بـ 32 بدلا من 13 .. ولكن أين الـ 13 ؟؟

ClickEvent.rar

اعتذر عن عدم تمكني للمتابعه الدورية في وقتنا الحالي

فليقبل الجميع تقديري واحترامي .. ولكم تحياتي

#11

:hmm:

إزاي ؟ :P

اعتذر عن عدم تمكني للمتابعه الدورية في وقتنا الحالي

فليقبل الجميع تقديري واحترامي .. ولكم تحياتي

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