qathi قام بنشر يوليو 13 قام بنشر يوليو 13 السلام عليكم اساتذتنا واعضاء منتدانى الرائع حياكم الله وبعد ..... مشكلة قديمة جديدة مؤرقة ارجو حلها بعد عدة محاولات واستخدام امثله وجدتها هنا في منتدانا اوفيسنا لم تفلح ارفع لكم المشكلة وارجو ان اتلقى من خبرائنا الافاضل الحل أن شاء الله عند استخدام الكود التالي في اي حدث عند مفتاح للأسفل لحقل معين فانه يعمل مثل حقل k3 If KeyCode = 115 Then 'f2 Form_Form1.k1.SetFocus ElseIf KeyCode = 114 Then 'f3 Form_Form1.k5.SetFocus End If لكن ليس من المعقول تكرار هذا الكود بكتابته في كل مره عند كل الحقول والكائنات النموذج خاصتاً عندما يكون الكود بة سطور كثيرة لأوامر أكثر فقمت بعملها في دالة مستقلة واستداعها بكود مختصر مثل حقل k4 وزر Bo1 لكنها لم تعمل Call AllowKey فقمت باضافة دالة وجدتها من المنتدى Public Function AllowKeyCode(KeyCode As Integer, Shift As Integer) As Integer If KeyCode = 115 Then 'f4 Form_Form1.k1.SetFocus ElseIf KeyCode = 114 Then 'f3 Form_Form1.k5.SetFocus End If End Function واستدعائها بالكود التالي: KeyCode = AllowKeyCode(KeyCode, Shift) عند وضعها في حدث عند مفتاح للأسفل اي حقل يودي هذا الكود الى عدم امكانية ادخال بيانات في الحقل وهذه مشكلة كبيرة كما في حقل k2 فقمت بوضع كود الدالة السابقة أو هذه في حدث عند مفتاح للأسفل النموذج Call AllowKey أو KeyCode = AllowKeyCode(KeyCode, Shift) لكن لا تعمل هذه الاكواد ارجو حل المشكلة بعمل كود يتم استداعة في جميع الحقول والكائنات النموذج بكود مختصر او اي حل بسيط عند الضغط على المفتاح المطلوب يتم نقلي او تنفيذ امر معين وانا في اي مكان في النموذج ولا يؤثر على عمل النموذج نفسة من ادخال البيانات او يتعارض مع اكواد اخرى ولكم من كل الشكل والتقدير مرفق ملف فيه جميع ماذكر Key1.rar Key1.accdb
أفضل إجابة M.Abd Allah قام بنشر يوليو 13 أفضل إجابة قام بنشر يوليو 13 (معدل) وعليكم السلام ورحمه الله وبركاته تقدر تستخدم الطريقه دي هتعمل الداله دي فى module وتحفظها باي اسم بالطريقه دى يبقي حضرتك عملت ا لكود مره واحده وبتستدعيه كل متحب Public Function HandleKeyDown(KeyCode As Integer, Shift As Integer) As Integer If KeyCode = 115 Then ' F4 Form_Form1.k1.SetFocus HandleKeyDown = 0 ' لمنع إدخال بيانات في الحقل الحالي ElseIf KeyCode = 114 Then ' F3 Form_Form1.k5.SetFocus HandleKeyDown = 0 ' لمنع إدخال بيانات في الحقل الحالي Else HandleKeyDown = KeyCode ' لإعادة KeyCode الأصلي لتمكين إدخال البيانات في الحقل End If End Function هفترض أن لديك نموذج يحتوى على عده حقول k1,k2,k3,k4,k5 وعايز تطبق نفس الكود علي جميع هذه الحقول هتعمل فى حدث keydown لكل حقل كالاتى Private Sub k1_KeyDown(KeyCode As Integer, Shift As Integer) KeyCode = HandleKeyDown(KeyCode, Shift) End Sub Private Sub k2_KeyDown(KeyCode As Integer, Shift As Integer) KeyCode = HandleKeyDown(KeyCode, Shift) End Sub Private Sub k3_KeyDown(KeyCode As Integer, Shift As Integer) KeyCode = HandleKeyDown(KeyCode, Shift) End Sub Private Sub k4_KeyDown(KeyCode As Integer, Shift As Integer) KeyCode = HandleKeyDown(KeyCode, Shift) End Sub Private Sub k5_KeyDown(KeyCode As Integer, Shift As Integer) KeyCode = HandleKeyDown(KeyCode, Shift) End Sub تم تعديل يوليو 17 بواسطه ابوخليل تنسيق الكود 1
qathi قام بنشر يوليو 17 الكاتب قام بنشر يوليو 17 في 14/7/2024 at 00:54, M.Abd Allah said: Else HandleKeyDown = KeyCode ' لإعادة KeyCode الأصلي لتمكين إدخال البيانات في الحقل الله عليك استاذنا @M.Abd Allah فينك من زمااااان جيب لي راسك اقبلها 😘 بارك الله فيك وجزاك الله عني خير شكرا لردك وكذلك انك خصصت من وقتك الثمين لأعطائي الحل حفظك الله ورعاك وزادك الله نورا وعلما 1 1
M.Abd Allah قام بنشر يوليو 17 قام بنشر يوليو 17 5 دقائق مضت, qathi said: الله عليك استاذنا @M.Abd Allah فينك من زمااااان جيب لي راسك اقبلها 😘 بارك الله فيك وجزاك الله عني خير شكرا لردك وكذلك انك خصصت من وقتك الثمين لأعطائي الحل حفظك الله ورعاك وزادك الله نورا وعلما ميرسي لكلامك ولذوقك تحت امرك احنا كلنا هنا فى خدمه بعض
qathi قام بنشر يوليو 18 الكاتب قام بنشر يوليو 18 استاذنا @M.Abd Allah ملاحظة بسيطة وجدت عند استعمال هذا الكود انه يبطل عمل زر التاب Tab فهل يوجد كود عند الضغط على هذا الزر التاب Tab يتم الانتقال الى الكائن او الحقل التالي او السابق بدون الحاجة الى استخدام كود سلكت التحديد
M.Abd Allah قام بنشر يوليو 18 قام بنشر يوليو 18 (معدل) منذ ساعه, qathi said: استاذنا @M.Abd Allah ملاحظة بسيطة وجدت عند استعمال هذا الكود انه يبطل عمل زر التاب Tab فهل يوجد كود عند الضغط على هذا الزر التاب Tab يتم الانتقال الى الكائن او الحقل التالي او السابق بدون الحاجة الى استخدام كود سلكت التحديد طيب استخدم التعديل ده وقولي النتيجه Public Function HandleKeyDown(KeyCode As Integer, Shift As Integer) As Integer If KeyCode = vbKeyTab Then ' Tab key HandleKeyDown = KeyCode ' احتفظ بالسلوك الافتراضي للتاب ElseIf KeyCode = 115 Then ' F4 Form_Form1.k1.SetFocus HandleKeyDown = 0 ' لمنع إدخال بيانات في الحقل الحالي ElseIf KeyCode = 114 Then ' F3 Form_Form1.k5.SetFocus HandleKeyDown = 0 ' لمنع إدخال بيانات في الحقل الحالي Else HandleKeyDown = KeyCode ' لإعادة KeyCode الأصلي لتمكين إدخال البيانات في الحقل End If End Function Private Sub k1_KeyDown(KeyCode As Integer, Shift As Integer) KeyCode = HandleKeyDown(KeyCode, Shift) End Sub Private Sub k2_KeyDown(KeyCode As Integer, Shift As Integer) KeyCode = HandleKeyDown(KeyCode, Shift) End Sub Private Sub k3_KeyDown(KeyCode As Integer, Shift As Integer) KeyCode = HandleKeyDown(KeyCode, Shift) End Sub Private Sub k4_KeyDown(KeyCode As Integer, Shift As Integer) KeyCode = HandleKeyDown(KeyCode, Shift) End Sub Private Sub k5_KeyDown(KeyCode As Integer, Shift As Integer) KeyCode = HandleKeyDown(KeyCode, Shift) End Sub تم تعديل يوليو 18 بواسطه M.Abd Allah
qathi قام بنشر يوليو 18 الكاتب قام بنشر يوليو 18 للرفع... ممكن كود الانتقال التالية أو السابق عند الضغط زر التاب Tab الذي رقمه 9 ......... أعتذر استاذنا الغالي بعد تحديث الصفحة ضهر ردك بعد ماقمت بارسال الرفع ساقوم بتجربت الكود الجديد واوافيك بالنتيجة
qathi قام بنشر يوليو 18 الكاتب قام بنشر يوليو 18 أعتذر استاذنا @M.Abd Allah تناولت الافطار قمت بتجربت الكود لا يعمل 54 دقائق مضت, M.Abd Allah said: If KeyCode = vbKeyTab Then ' Tab key HandleKeyDown = KeyCode ' احتفظ بالسلوك الافتراضي للتاب
qathi قام بنشر يوليو 18 الكاتب قام بنشر يوليو 18 للرفع... ممكن كود الانتقال التالية أو السابق عند الضغط زر التاب Tab الذي رقمه 9
M.Abd Allah قام بنشر يوليو 18 قام بنشر يوليو 18 22 دقائق مضت, qathi said: للرفع... ممكن كود الانتقال التالية أو السابق عند الضغط زر التاب Tab الذي رقمه 9 طيب جرب الكود ده كده عند الضغط علي تاب ومعاه شيفت هينقلك الحقل السابق وعند الضغط علي تاب فقط هينقلك علي الحقل التالي جرب ووافيني بالنتيجه Public Function HandleKeyDown(KeyCode As Integer, Shift As Integer) As Integer If KeyCode = 9 Then ' Tab key If (Shift And acShiftMask) > 0 Then ' Shift + Tab (go to previous control) SendKeys "+{TAB}" Else ' Tab (go to next control) SendKeys "{TAB}" End If HandleKeyDown = 0 ' لمنع إدخال بيانات في الحقل الحالي ElseIf KeyCode = 115 Then ' F4 Form_Form1.k1.SetFocus HandleKeyDown = 0 ' لمنع إدخال بيانات في الحقل الحالي ElseIf KeyCode = 114 Then ' F3 Form_Form1.k5.SetFocus HandleKeyDown = 0 ' لمنع إدخال بيانات في الحقل الحالي Else HandleKeyDown = KeyCode ' لإعادة KeyCode الأصلي لتمكين إدخال البيانات في الحقل End If End Function Private Sub k1_KeyDown(KeyCode As Integer, Shift As Integer) KeyCode = HandleKeyDown(KeyCode, Shift) End Sub Private Sub k2_KeyDown(KeyCode As Integer, Shift As Integer) KeyCode = HandleKeyDown(KeyCode, Shift) End Sub Private Sub k3_KeyDown(KeyCode As Integer, Shift As Integer) KeyCode = HandleKeyDown(KeyCode, Shift) End Sub Private Sub k4_KeyDown(KeyCode As Integer, Shift As Integer) KeyCode = HandleKeyDown(KeyCode, Shift) End Sub Private Sub k5_KeyDown(KeyCode As Integer, Shift As Integer) KeyCode = HandleKeyDown(KeyCode, Shift) End Sub
qathi قام بنشر يوليو 18 الكاتب قام بنشر يوليو 18 15 دقائق مضت, M.Abd Allah said: If KeyCode = 9 Then ' Tab key If (Shift And acShiftMask) > 0 Then ' Shift + Tab (go to previous control) SendKeys "+{TAB}" Else ' Tab (go to next control) SendKeys "{TAB}" End If HandleKeyDown = 0 ' لمنع إدخال بيانات في الحقل الحالي أستاذنا الغالي قمت بتجربت الكود ولا يعمل
M.Abd Allah قام بنشر يوليو 18 قام بنشر يوليو 18 7 دقائق مضت, qathi said: أستاذنا الغالي قمت بتجربت الكود ولا يعمل واضح اني كده مش فاهم قصد حضرتك 🌹🌹🌹
qathi قام بنشر يوليو 18 الكاتب قام بنشر يوليو 18 (معدل) 16 دقائق مضت, M.Abd Allah said: واضح اني كده مش فاهم قصد حضرتك 🌹🌹🌹 أستاذنا الغالي بارك الله فيك على مجهودك معايا قمت بوضع الكود الأخير الذي اعطيتني في ملفي 40 دقائق مضت, M.Abd Allah said: If KeyCode = 9 Then ' Tab key If (Shift And acShiftMask) > 0 Then ' Shift + Tab (go to previous control) SendKeys "+{TAB}" Else ' Tab (go to next control) SendKeys "{TAB}" End If HandleKeyDown = 0 ' لمنع إدخال بيانات في الحقل الحالي وقمت بالضغط على الازرار كما اشرت ويضل المؤشر في مكانه ولا يتم الانتقال نهائيا سواء إلى الحقل التالي أو السابق هل قمت بتجربت الكود بنفسك ؟؟؟ إذا قمت بتجربته ياريت ارفاق الملف حتى أرى أن كان هناك اختلاف أو أي أمر أخر تم تعديل يوليو 18 بواسطه qathi
M.Abd Allah قام بنشر يوليو 18 قام بنشر يوليو 18 21 دقائق مضت, qathi said: أستاذنا الغالي بارك الله فيك على مجهودك معايا قمت بوضع الكود الأخير الذي اعطيتني في ملفي وقمت بالضغط على الازرار كما اشرت ويضل المؤشر في مكانه ولا يتم الانتقال نهائيا سواء إلى الحقل التالي أو السابق هل قمت بتجربت الكود بنفسك ؟؟؟ إذا قمت بتجربته ياريت ارفاق الملف حتى أرى أن كان هناك اختلاف أو أي أمر أخر بص حضرتك فالصوره كويس انا سبت الماوس خالص وانتقلت للحقول التاليه أو السابقه بالتاب أو بالتاب مع شيفت QATHI-1.accdb
M.Abd Allah قام بنشر يوليو 18 قام بنشر يوليو 18 كذلك بال f3 و f4 لكن انا واضح إن حضرتك تقصد حاجه تانيه غير اللي انا فهمته بعتذر الغي حضرتك تفعيل اجابه السؤال وإن شاء الله هيجي حد يفهم طلبك ويعمله
qathi قام بنشر يوليو 18 الكاتب قام بنشر يوليو 18 منذ ساعه, M.Abd Allah said: بص حضرتك فالصوره كويس انا سبت الماوس خالص وانتقلت للحقول التاليه أو السابقه بالتاب أو بالتاب مع شيفت أستاذنا الغالي قمت بتجربت الملف الذي ارسلته ويعمل بشكل طبيعي لكن عند استخدام نفس الاكواد في ملفي بمديول من الملف الذي ارسلته فانه يعمل كل شيء ماعد عند الضغط زر التاب TAB أو زر الشفت والتاب TAB فما أعرف هل هناك كود يتعارض ويوقف عمل الزرين من النموذج .. بالرغم عارف و متاكد أنه لا يوجد أو قد ربما هناك خيار من خصائص النموذج يسبب هذا .. لا أعلم تمنيت أن اقتطع جزء من ملفي وارسله لك حتى ترى المشكلة لكن الامر لا ينفع هل تعرف أستاذنا الغالي ما المشكلة ؟؟
M.Abd Allah قام بنشر يوليو 18 قام بنشر يوليو 18 19 دقائق مضت, qathi said: أستاذنا الغالي قمت بتجربت الملف الذي ارسلته ويعمل بشكل طبيعي لكن عند استخدام نفس الاكواد في ملفي بمديول من الملف الذي ارسلته فانه يعمل كل شيء ماعد عند الضغط زر التاب TAB أو زر الشفت والتاب TAB فما أعرف هل هناك كود يتعارض ويوقف عمل الزرين من النموذج .. بالرغم عارف و متاكد أنه لا يوجد أو قد ربما هناك خيار من خصائص النموذج يسبب هذا .. لا أعلم تمنيت أن اقتطع جزء من ملفي وارسله لك حتى ترى المشكلة لكن الامر لا ينفع هل تعرف أستاذنا الغالي ما المشكلة ؟؟ استاذنا العزيز الملف اللي انا قمت بمشاركته هو نفس الملف المرفق من حضرتك فى مشاركتك ولكن انا غيرت اسمه حتي لا يحدث أي خطأ انا مغيرتش اي حاجه منه غير الداله كون أن حضرتك عندك ملف عمل آخر وشاركت جزء منه فهذا ممن الممكن أن يكون هناك أي مشكله أما فى تطبيق الاكواد علي ملفك أو في خصائص النماذج لا يستطيع أحد اكتشاف الخلل الا حضرتك لانك من يمتلك الملف - لكن بشكل عام تقدر حضرتك تنسخ الداله اللي فالموديل فى موديل جديد ربما حضرتك نسخته في موديول قديم عندك في قاعده البيانات وفيه كود يتعارض مع عمل الكود - ثانيا تقدر تراجع جمل private sub keydown للحقول اللي حضرتك عايزها ربما في اختلاف في مسمياتها أو أنها مكرره فالنموذج أو ما شبه ذلك وإن شاء الله هتلاقيها اشتغلت معاك وارد جدا تلاقي تعارض في الاكواد عشان كده راجعها تاني بدقه
qathi قام بنشر يوليو 18 الكاتب قام بنشر يوليو 18 (معدل) 19 دقائق مضت, M.Abd Allah said: لكن بشكل عام تقدر حضرتك تنسخ الداله اللي فالموديل فى موديل جديد ربما حضرتك نسخته في موديول قديم عندك في قاعده البيانات وفيه كود يتعارض مع عمل الكود - ثانيا تقدر تراجع جمل private sub keydown للحقول اللي حضرتك عايزها ربما في اختلاف في مسمياتها أو أنها مكرره فالنموذج أو ما شبه ذلك وإن شاء الله هتلاقيها اشتغلت معاك وارد جدا تلاقي تعارض في الاكواد عشان كده راجعها تاني بدقه أستاذنا الغالي حفظك الله وزداك علما أنا عارف أن حضرتك استخدمت الملف الذي قمت أنا بوضعة بالمشاركة ساقوم بالتأكيد من ماأشرت لي وأن شاء الله اكتشف حل واذا لم ينفع سأرجع أن شاء الله اخبرك بالنتائج اكرر شكري لك تم تعديل يوليو 18 بواسطه qathi
qathi قام بنشر يوليو 19 الكاتب قام بنشر يوليو 19 (معدل) أستاذنا الغالي @M.Abd Allah اكتشفت المشكلة كانت فين أمر بسيط لم انتبه له وهو قمت بنفسي بتغيير عنوان الفانكشن ونسيت ما أقوم بتغييرها في باقي اكواد المديول نفسة مثل مابعد Else شكرا لك على سعت صدرك معي وجزاك الله عني خيرا HandleKeyDown وتضل اشارة أفضل اجابة كما هي أفضل اجابه هي اجابتك السابقة تم تعديل يوليو 19 بواسطه qathi
M.Abd Allah قام بنشر يوليو 19 قام بنشر يوليو 19 6 ساعات مضت, qathi said: أستاذنا الغالي @M.Abd Allah اكتشفت المشكلة كانت فين أمر بسيط لم انتبه له وهو قمت بنفسي بتغيير عنوان الفانكشن ونسيت ما أقوم بتغييرها في باقي اكواد المديول نفسة مثل مابعد Else شكرا لك على سعت صدرك معي وجزاك الله عني خيرا HandleKeyDown وتضل اشارة أفضل اجابة كما هي أفضل اجابه هي اجابتك السابقة الحمد لله ان حضرتك اكتشفت الغلط فين جل من لا يسهو ( محدش فينا كبني ادمين مبيغلطش ) ☺️☺️ اما بالنسبه لسعه صدرى دي كانت عشان انت راجل محترم فكان حقك اني لازم ارد عليك قدام من الاول حاولت اساعد ومش عيب اني لما اوصل لنقطه اني مش فاهم السؤال او المشكله اسيب الطريق لغيري يكمل لأن موجود كتير جدا من هو افضل مني ( انا مجرد هاوي ) 🥱🥱🥱 بالنسبه لأفضل اجابه دي فدي والله لم تعد تعنيني علي الاطلاق 🤓 انا بجتهد لنفسي ( بحب اتحدي نفسي في صعوبات الاكسس ) تحياتي لشخصك 1
qathi قام بنشر يوليو 21 الكاتب قام بنشر يوليو 21 (معدل) أستاذنا الغالي @M.Abd Allah كيف يكون الكود في حالة استخدام زرارين معاً مثل الشفت وحرف ؤ ( Shaft + C ) أو ( Ctrl + B ) عند الضغط عليها معاً يقوم بتنفيذ أمر معين رجعت لنفس الموضوع بعد فشل الكثير من المحاولات وشكرا لك على جهدك الثمين في مساعدتي تم تعديل يوليو 21 بواسطه qathi 1
محمد احمد لطفى قام بنشر يوليو 21 قام بنشر يوليو 21 تفضل بالتوفيق Shift: Shift = 1 Ctrl: Shift = 2 Alt: Shift = 4 If KeyCode = 66 And Shift = 1 Then or If KeyCode = vbKeyB And Shift = 1 Then If KeyCode = 67 And Shift = 2 Then or If KeyCode = vbKeyc And Shift = 2 Then 1
M.Abd Allah قام بنشر يوليو 21 قام بنشر يوليو 21 6 ساعات مضت, qathi said: أستاذنا الغالي @M.Abd Allah كيف يكون الكود في حالة استخدام زرارين معاً مثل الشفت وحرف ؤ ( Shaft + C ) أو ( Ctrl + B ) عند الضغط عليها معاً يقوم بتنفيذ أمر معين رجعت لنفس الموضوع بعد فشل الكثير من المحاولات وشكرا لك على جهدك الثمين في مساعدتي هتعدل الداله فقط بالشكل التالي Public Function HandleKeyDown(KeyCode As Integer, Shift As Integer) As Integer If (Shift And acShiftMask) > 0 Then ' إذا كان مفتاح Shift مضغوطًا Select Case KeyCode Case vbKeyC ' إذا كان المفتاح المضغوط هو C MsgBox "Shift + C تم الضغط على" HandleKeyDown = 0 ' لمنع إدخال بيانات في الحقل الحالي Exit Function End Select ElseIf (Shift And acCtrlMask) > 0 Then ' إذا كان مفتاح Ctrl مضغوطًا Select Case KeyCode Case vbKeyB ' إذا كان المفتاح المضغوط هو B MsgBox "Ctrl + B تم الضغط على" HandleKeyDown = 0 ' لمنع إدخال بيانات في الحقل الحالي Exit Function End Select Else Select Case KeyCode Case 115 ' F4 Form_Form1.k1.SetFocus HandleKeyDown = 0 ' لمنع إدخال بيانات في الحقل الحالي Case 114 ' F3 Form_Form1.k5.SetFocus HandleKeyDown = 0 ' لمنع إدخال بيانات في الحقل الحالي Case Else HandleKeyDown = KeyCode ' لإعادة KeyCode الأصلي لتمكين إدخال البيانات في الحقل End Select End If End Function بقيت التكست بوكس كما هي 2
qathi قام بنشر يوليو 21 الكاتب قام بنشر يوليو 21 (معدل) شكرا لك اخي واستاذي @محمد احمد لطفى وشكرا لك أستاذي الغالي @M.Abd Allah اشكركما على المساعدة تنوع في الكود و أكثر من طريقة .. رائع جدا تسلم اياديكم اساتذتنا بارك الله فيكما وجزاكم الله عنا خيرا ساقوم بتجربتهما تم تعديل يوليو 21 بواسطه qathi 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.