PDA

View Full Version : سوال: سؤال در مورد فوکوس



hr0694
شنبه 23 مهر 1390, 21:12 عصر
سلام

این کد رو یکی از دوستان برام نوشته برای جلوگیری از پیست شدن حروف انگلیسی اما من وقتی وسط متن حروف تکست1 رو حرفی اضافه یا کم یا پاک میکنم فوکوس به آخر تکست1 میپره من میخام جوری این کد اصلاح بشه که فقط در پیست کردن حروف فارسی فوکوس به آخر تکست1 بپره

Public Sub DelExtraChrs(tTextBox As TextBox, InvalidChrsGroup$)
Dim i&, text$
text$ = tTextBox
For i = 1 To Len(InvalidChrsGroup$)
text$ = Replace(text$, Mid(InvalidChrsGroup$, i, 1), Empty, , , vbTextCompare)
Next i
tTextBox = text$
tTextBox.SelStart = Len(tTextBox)
End Sub

Private Sub Text1_Change()
DelExtraChrs Text1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
End Sub

arenaw
شنبه 23 مهر 1390, 22:13 عصر
سلام؛ کافیه اول تابع از محل فعلی selstart یکاپ بگیرید و آخرش برگردونیدش به جای اول


Public Sub DelExtraChrs(tTextBox As TextBox, InvalidChrsGroup$)
Dim i&, text$, tmp
tmp = tTextBox.SelStart
text$ = tTextBox
For i = 1 To Len(InvalidChrsGroup$)
text$ = Replace(text$, Mid(InvalidChrsGroup$, i, 1), Empty, , , vbTextCompare)
Next i
tTextBox = text$
tTextBox.SelStart = tmp
End Sub

hr0694
شنبه 23 مهر 1390, 22:25 عصر
با این کد فوکوس به اول تکست میپره من میخام در آن مکان که حرفی اضافه یا کم یا پاک میکنم باقی بمونه نه به اول نه به آخر بپره

arenaw
یک شنبه 24 مهر 1390, 00:09 صبح
خب چرا برنامه رو انقد میپیچونیش؟ به جاش ازین کد استفاده کن که هم راحت تره هم این مشکلا پیش نیاد
Dim InvalidChrsGroup$
Private Sub Form_Load()
InvalidChrsGroup$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwx yz"
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
For I = 1 To Len(InvalidChrsGroup$)
If KeyAscii = Asc(Mid(InvalidChrsGroup$, I, 1)) Then KeyAscii = 0
Next I
End Sub

hr0694
یک شنبه 24 مهر 1390, 10:30 صبح
جناب arenaw (http://barnamenevis.org/member.php?203395-arenaw) اصلا هر کاری کردم این کدتان کار نمیکند

arenaw
یک شنبه 24 مهر 1390, 16:59 عصر
شرمنده، این فقط برای ورودی از کیبرد کار میکنه، به کپی پیستش دقت نکردم
ولی با یه روش ابتکاری مشکلو حل کردم ، فقط شما یه تایمر با اینترول 1 به فرمت اضافه کن (البته روش ابتکاریه)


Dim tmp&
Public Sub DelExtraChrs(tTextBox As TextBox, InvalidChrsGroup$)
Dim i&, text$
text$ = tTextBox
For i = 1 To Len(InvalidChrsGroup$)
text$ = Replace(text$, Mid(InvalidChrsGroup$, i, 1), Empty, , , vbTextCompare)
Next i
tTextBox = text$
tTextBox.SelStart = tmp
Timer1.Enabled = True
End Sub
Private Sub Text1_Change()
Timer1.Enabled = False
DelExtraChrs Text1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
End Sub
Private Sub Timer1_Timer()
tmp = Text1.SelStart
End Sub