السلام عليكم ورحمة الله وبركاته
ارجو المساعدة بالتنقل بين التكست بمفتاح انتر
حيث ان الكود ادناه فلح فى الفورم الاول ولم يعمل فى الفورم 2 او 3
PHP كود :
Private Sub Form_KeyPress(KeyAscii As Integer)
On Error Resume Next
If KeyAscii = vbKeyReturn Then
KeyAscii = 0
Dim i As Long: For i = Me.Count - 1 To 0 Step -1
If Me.Controls(i).Name = Me.ActiveControl.Name And TypeName(Me.Controls(i - 1)) = "TextBox" Then
Me.Controls(i - 1).SetFocus
Exit For
End If
Next i
End If
End Sub
.....
لاتنس تغيير الخاصية
KeyPreview إلى
True لكل فورم تريد فيه هذا الأسلوب في التنقل بين الادوات
وجدت هذا الكود وهو أفضل
كود :
Private Sub Form_KeyPress(KeyAscii As Integer)
If TypeName(Me.ActiveControl) = "TextBox" _
Or TypeName(Me.ActiveControl) = "CommandButton" Then
If KeyAscii = vbKeyReturn Then
KeyAscii = 0
Dim i As Long: For i = Me.Count - 1 To 0 Step -1
If Me.Controls(i).Name = Me.ActiveControl.Name Then
If TypeName(Me.Controls(i - 1)) = "TextBox" _
Or TypeName(Me.Controls(i - 1)) = "CommandButton" Then
Me.Controls(i - 1).SetFocus
Exit For
End If
End If
Next i
End If
End If
End Sub
.....
طريقة أستخدام زر Enter للتنقل بين TextBox ...
بسم الله الرحمن الرحيم ...
===================
قم بتشغيل الفيجوال بيسيك .. ثم أختر منه من مربع الحوار Standard EXE وبعد ذلك
قم بأضافة التالي على الفورم
1-Text1
2-Text2
3-Text3
4-Text4
5-Text5
الأن سوف نقوم باضافة أوامر البرمجة ....
ضع هذا الكود في التصريحات جنرال في أعلى صفحة الكود .. طبعا الكود راح يترتب على التوالي ..
========
كود:
Private Declare Function LoadKeyboardLayout Lib "user32" Alias _
"LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal _
flags As Long) As Long
Private Sub Text1_GotFocus()
' لجعل الكتابه بالعربي
Call LoadKeyboardLayout("00000401", 1)
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then Text2.SetFocus
Dim t As Integer
t = KeyAscii
If t = 8 Then Exit Sub
If (t < 48 Or t > 57) Then KeyAscii = 0
End Sub
Private Sub Text2_GotFocus()
' لجعل الكتابه بالعربي
Call LoadKeyboardLayout("00000401", 1)
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then Text3.SetFocus
End Sub
Private Sub Text3_GotFocus()
' لجعل الكتابه بالعربي
Call LoadKeyboardLayout("00000401", 1)
End Sub
Private Sub Text3_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then Text4.SetFocus
End Sub
Private Sub Text4_GotFocus()
' لجعل الكتابه بالعربي
Call LoadKeyboardLayout("00000401", 1)
End Sub
Private Sub Text4_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then Text5.SetFocus
End Sub
Private Sub Text5_GotFocus()
' لجعل الكتابه بالعربي
Call LoadKeyboardLayout("00000401", 1)
End Sub
Private Sub Text5_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Dim t As Integer
t = KeyAscii
End If
End Sub
==========================
وبس ... طبعا هذه الأكواد خاصة للكي برس KeyPress وخصوصا بالزر أنتر ... وفي هذا
الكود مناداة LoadKeyboardLayout للكتابة بالعربي .. على طول بدون تحويل .. أتوقع الكل فاهم .. وهذا لا يحتاج إإلى شرح ..
منقول