منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
تحسين التعامل مع عناصر النموذج - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : تحسين التعامل مع عناصر النموذج (/showthread.php?tid=9430)

الصفحات: 1 2


تحسين التعامل مع عناصر النموذج - kafi - 26-06-13

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

ارغب في تحسين تعامل المستثمر مع شاشة / ادخال ذاتية / في مثالي المرفق، باتاحة المجال له

1- ان يتم الانتقال من حقل الى اخر من حقول تلك الشاشة عن طريق الضغط على زر Enter

2- كما ارغب بان يتم اظهار حقول الارقام ( هاتف 1 - هاتف 2 - جوال - فاكس ) بالارقام العربية مثل 4555637 وليس
بالارقام الهندية التي من الصعب قراءتها

ارجو تعديل المثال المرفق
والف الف شكر


تحسين التعامل مع عناصر النموذج - Genius Live - 26-06-13

للتقل بمفتاح Enter في النافذة
ضع هذه الــ Function في اي مكان في كود الــ Form

كود :
Protected Overrides Function ProcessCmdKey _
       (ByRef msg As System.Windows.Forms.Message, _
       ByVal keyData As System.Windows.Forms.Keys) As Boolean
        If msg.WParam.ToInt32() = CInt(Keys.Enter) Then
            SendKeys.Send("{Tab}")
            Return True
        End If
        Return MyBase.ProcessCmdKey(msg, keyData)
    End Function
Smile:eek:Smile


تحسين التعامل مع عناصر النموذج - kslawy - 26-06-13

بالنسبة لكتابة الأرقام بالإنجليزي :
في حدث الـ FormLoad
كود :
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.TextBox1.RightToLeft = Windows.Forms.RightToLeft.No
    End Sub
أو يمكنك تغييرها من خصائص مربع النص مباشرة


تحسين التعامل مع عناصر النموذج - kafi - 27-06-13

[color="#0000cd"][b]شكرا اخي
kslawy
على ماتفضلت به من جعل كتابة الارقام تاخد شكل العربي ( الاجنبي)

بارك الله فيك
[/b][/color]


تحسين التعامل مع عناصر النموذج - kafi - 27-06-13

ا[b]خي الكريم
Genius Live

ان الكود الذي تفضلت به رائــــــــــــــــع، من اجل جعل التنقل بين الحقول يتم عن طريق الضغط على زر Enter
[COLOR="#B22222"]
[u]ولكن فيه مشكلة خطيرة للغاية
[/u][/COLOR]

وهي عند الوصول الى زر الحفظ، والضغط على زر
enter
المفروض ان يتم حفظ البيانات

ولكن الذي يحدث......
ان الزر لا يستجيب لحدث الحفظ وينتقل الى الزر التالي

[b][SIZE=5]وهذه مشكلة كبيرة

ارجو تعديل الكود في ظل المشكلة المطروحة
والف شكر
[/b][/SIZE][/b]


تحسين التعامل مع عناصر النموذج - kslawy - 27-06-13

كود :
Private Sub TextBox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox4.KeyDown, TextBox3.KeyDown, TextBox2.KeyDown, TextBox1.KeyDown
        If e.KeyCode = Keys.Enter Then
            SendKeys.Send("{Tab}")
        End If
    End Sub

لاحظ للـ Handles اللي في نهاية السطر الأول من الكود تم تجميع جميع أحداث مربعات النصوص (KeyDown) في حدث مربع النص الأول . كان ممكن نضع الكود لكل مربع نص علي حدا ولكن بهذه الطريقة يتم اختصار الأكواد


تحسين التعامل مع عناصر النموذج - kafi - 27-06-13

شكرا اخي
kslawy

[HTML]Private Sub TextBox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox4.KeyDown, TextBox3.KeyDown, TextBox2.KeyDown, TextBox1.KeyDown
If e.KeyCode = Keys.Enter Then
SendKeys.Send("{Tab}")
End If
End Sub[/HTML]

على هذا الكود الرائع، وفعلا هو شعال مائة مائة ولكـــــــــــــــــن
المشكلة انني مضطر ان اضعه في حدث ال Keydown لكافة العناصر المتواجدة على الشاشة، ولكن وجدت الكود الذي تفضل به الاخ Genius_Live
مختصر، اي بمعنى اخر، اقوم باستدعائه مرة واحدة فقط عند تحميل النموذج، ولكن به مشكلة العيب الدي شرحته،

ولا اعرف ان كان يمكن اصلاح كود الاخ Genius_Live يحيث يصبح فعال وعملي !!!!!!!!!!!!!

والف شكر



تحسين التعامل مع عناصر النموذج - sooriaty03 - 28-06-13

kafi كتب :شكرا اخي
kslawy

[HTML]Private Sub TextBox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox4.KeyDown, TextBox3.KeyDown, TextBox2.KeyDown, TextBox1.KeyDown
If e.KeyCode = Keys.Enter Then
SendKeys.Send("{Tab}")
End If
End Sub[/HTML]

على هذا الكود الرائع، وفعلا هو شعال مائة مائة ولكـــــــــــــــــن
المشكلة انني مضطر ان اضعه في حدث ال Keydown لكافة العناصر المتواجدة على الشاشة، ولكن وجدت الكود الذي تفضل به الاخ Genius_Live
مختصر، اي بمعنى اخر، اقوم باستدعيه مرة واحدة فقط عند تحميل النموذج، ولكن به مشكلة العيب الدي شرحته،

ولا اعرف ان كان يمكن اصلاح كود الاخ Genius_Live يحيث يصبح فعال وعملي !!!!!!!!!!!!!

والف شكر

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

تفضل أخي الكريم
هذا تعديل لكود الأخ Genius_Live - من بعد إذنه
كود :
[color=blue][FONT=Consolas]Protected[/FONT][/color][color=#000000][FONT=Consolas] [COLOR=blue]Overrides[/color] [color=blue]Function [/color][/FONT][/COLOR][color=#000000][FONT=Consolas]ProcessCmdKey[/FONT][/color][color=#000000][FONT=Consolas]([/FONT][/color][color=#000000][FONT=Consolas][COLOR=blue]ByRef [/color][/FONT][/COLOR][color=#000000][FONT=Consolas]msg [/FONT][/color][color=blue][FONT=Consolas]As [/FONT][/color][color=#000000][FONT=Consolas]System.Windows.Forms.[/FONT][/color][color=#2B91AF][FONT=Consolas]Message[/FONT][/color][color=#000000][FONT=Consolas], [/FONT][/color][color=#000000][FONT=Consolas][COLOR=blue]ByVal [/color][/FONT][/COLOR][color=#000000][FONT=Consolas]keyData [/FONT][/color][color=blue][FONT=Consolas]As [/FONT][/color][color=#000000][FONT=Consolas]System.Windows.Forms.[/FONT][/color][color=#2B91AF][FONT=Consolas]Keys[/FONT][/color][color=#000000][FONT=Consolas]) [/FONT][/color][color=blue][FONT=Consolas]As [/FONT][/color][COLOR=blue][FONT=Consolas]Boolean
[/FONT][/COLOR][color=blue][FONT=Consolas]If [/FONT][/color][color=#000000][FONT=Consolas]msg.WParam.ToInt32() = [/FONT][/color][color=#0000FF][FONT=Consolas]CInt[/FONT][/color][color=#000000][FONT=Consolas]([/FONT][/color][color=#2B91AF][FONT=Consolas]Keys[/FONT][/color][color=#000000][FONT=Consolas].Enter[/FONT][/color][color=#000000][FONT=Consolas]) [/FONT][/color][color=#0000FF][FONT=Consolas]Then[/FONT][/color]
[color=blue][FONT=Consolas]If [/FONT][/color][color=#000000][FONT=Consolas][COLOR=blue]TypeOf [/color][/FONT][/COLOR][color=#000000][FONT=Consolas][COLOR=blue]Me[/color][/FONT][/COLOR][color=#000000][FONT=Consolas].ActiveControl [/FONT][/color][color=blue][FONT=Consolas]Is [/FONT][/color][color=#2B91AF][FONT=Consolas]Button [/FONT][/color][COLOR=#0000FF][FONT=Consolas]Then
[/FONT][/COLOR][color=blue][FONT=Consolas]Return[/FONT][/color][color=#000000][FONT=Consolas][COLOR=blue]MyBase[/color][/FONT][/COLOR][color=#000000][FONT=Consolas].ProcessCmdKey[/FONT][/color][color=#000000][FONT=Consolas]([/FONT][/color][color=#000000][FONT=Consolas]msg[/FONT][/color][color=#000000][FONT=Consolas], [/FONT][/color][color=#000000][FONT=Consolas]keyData[/FONT][/color][COLOR=#000000][FONT=Consolas])
[/FONT][/COLOR][COLOR=#0000FF][FONT=Consolas]Else
[/FONT][/COLOR][color=#2B91AF][FONT=Consolas]SendKeys[/FONT][/color][color=#000000][FONT=Consolas].Send[/FONT][/color][color=#000000][FONT=Consolas]([/FONT][/color][color=#A31515][FONT=Consolas]"{Tab}"[/FONT][/color][COLOR=#000000][FONT=Consolas])
[/FONT][/COLOR][color=blue][FONT=Consolas]Return[/FONT][/color][COLOR=blue][FONT=Consolas]True
[/FONT][/COLOR][color=blue][FONT=Consolas]End[/FONT][/color][COLOR=blue][FONT=Consolas]If
[/FONT][/COLOR][color=blue][FONT=Consolas]End[/FONT][/color][COLOR=blue][FONT=Consolas]If
[/FONT][/COLOR][color=blue][FONT=Consolas]Return[/FONT][/color][color=#000000][FONT=Consolas][COLOR=blue]MyBase[/color].ProcessCmdKey[/FONT][/COLOR][color=#000000][FONT=Consolas]([/FONT][/color][color=#000000][FONT=Consolas]msg[/FONT][/color][color=#000000][FONT=Consolas], [/FONT][/color][color=#000000][FONT=Consolas]keyData[/FONT][/color][COLOR=#000000][FONT=Consolas])
[/FONT][/COLOR][color=blue][FONT=Consolas]End[/FONT][/color][color=#000000][FONT=Consolas] [COLOR=blue]Function[/color][/FONT][/COLOR]

بالتوفيق


تحسين التعامل مع عناصر النموذج - sooriaty03 - 28-06-13

عفوا الأكواد ظهرت بشكل غير صحيح
وهذا هو التصحيح

كود :
Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
        If msg.WParam.ToInt32() = CInt(Keys.Enter) Then
            If TypeOf Me.ActiveControl Is Button Then
                Return MyBase.ProcessCmdKey(msg, keyData)
            Else
                SendKeys.Send("{Tab}")
                Return True
            End If
        End If
        Return MyBase.ProcessCmdKey(msg, keyData)
    End Function

بالتوفيق


تحسين التعامل مع عناصر النموذج - kafi - 28-06-13

شكرا اخي
soriaty على اجابتك

ولكن بعد نسخ الكود...
وعند معالجة البرنامج

[ATTACH=CONFIG]3226[/ATTACH] ظهر وجود رسالة خطأ
ReturnMybass is not declare

اعمل على ( win8 - visual 12)