PDA

View Full Version : سوال: نوشتن یک کد و استفاده از آن در تمام اجزای برنامه



bugattis
شنبه 18 مهر 1388, 11:31 صبح
کد زیر برای فازسی نوشتن توی یه text در برنامه نویسی vb است
این کد را چطور تبدیل به یک تابع کنم که هر وقتی که خواستم از این کد در text های دیگه هم استفاده کنم (در کل می خوام هر وقت که خواستم این کد رو فراخوانی کنم)|


Private Sub Text1_KeyPress(KeyAscii As Integer)

On Error Resume Next

Dim f$, find%, i%

f = "ابپتثجچحخدذرزژسشصضطظعغفقك گلمنوهيئؤ"

For i = 1 To Len(f)
If KeyAscii = Asc(Mid(f, i, 1)) Or KeyAscii = AscW(Mid(f, i, 1)) Then
find = 1
Exit For
End If
Next

Select Case KeyAscii
Case vbKeySpace, vbKeyBack, vbKeyDelete, vbKeyReturn, vbKeyUp, vbKeyDown, vbKeyLeft, _
vbKeyRight, vbKeyPageDown, vbKeyPageDown, vbKeyHome, vbKeyEnd, vbKeyInsert
find = 1
End Select

If find = 0 Then KeyAscii = 0

End Sub

powerboy2988
شنبه 18 مهر 1388, 11:37 صبح
شما مي توني اين كد رو به صورت يك تابع دربياري و يك module به پروژت اضافه كني و اين تابع رو تو module بزاري

bugattis
شنبه 18 مهر 1388, 12:44 عصر
یه کم بیشتر توضیح بدید من توی این قسمت مبتدی ام

powerboy2988
شنبه 18 مهر 1388, 12:58 عصر
اين هم عكس هايي واسه اضافه كردن يك module به برنامه و درست كردن يك public Sub

bugattis
شنبه 18 مهر 1388, 15:27 عصر
با عرض پوزش از دوست عزیز
اگه ممکنه کد بالا رو که خودم قرار دادم برام آماده کنید و فایلشو بزارید برای دانلود
یا هر کد دیگه ای که فایلشو برای دانلود آماده دارید
با تشکر:گیج:

powerboy2988
شنبه 18 مهر 1388, 15:31 عصر
با عرض پوزش از دوست عزیز
اگه ممکنه کد بالا رو که خودم قرار دادم برام آماده کنید و فایلشو بزارید برای دانلود
یا هر کد دیگه ای که فایلشو برای دانلود آماده دارید
با تشکر:گیج:

شما سورس فايلتو بزار.. حتما انجام ميشه دوست عزيز

relax_cp
شنبه 18 مهر 1388, 16:39 عصر
اگه می خواهی کاری کنی که توی تکست باکس فارسی نوشته بشه از کد زیر می تونی استفاده کنی
این کد رو توی یک ماژول بذار:


Public Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal Flags As Long) As Long


این دو کد را هم توی همون ماژول بذار:


Public Sub farsisaz()
LoadKeyboardLayout "00000429", &H1 'fa
End Sub

Public Sub englisysaz()
LoadKeyboardLayout "00000409", &H1 'En
End Sub

حالا هر جا خواستی صفحه کلید فارسی بشه توی رویدادش بنویس farsisaz مثلا:
کد زیر به محض ورود به فرم صفحه کلید را فارسی میکنه:


Private Sub Form_Load()
farsisaz
End Sub

powerboy2988
شنبه 18 مهر 1388, 16:56 عصر
مي توني از اين ocx هم استفاده كني
مثال :


FK1.FarsiKey

pcdownload.bloghaa.com
شنبه 18 مهر 1388, 21:03 عصر
bugattis جان کدی که شما در اختیار داری یه کم طولانیه
که میتونی به صورت زیر تغییر بدی:

Private Sub Text1_KeyPress(KeyAscii As Integer)
On Error Resume Next
f = "ابپتثجچحخدذرزژسشصضطظعغفق? ?گلمنوهيئؤ"
If InStr(1, f, Chr(KeyAscii)) = 0 Then
KeyAscii = 0
End If
End Sub

و برای استفاده از اون کد برای تکست باکس های مختلف اول تابع زیر را بنویس:

Private Function fa(Key As Integer) As Long
On Error Resume Next
f = "ابپتثجچحخدذرزژسشصضطظعغفق? ?گلمنوهيئؤ"
If InStr(1, f, Chr(Key)) = 0 Then
fa = 0
else
fa=key
End If
End Function

وسپس در رویداد keyPress هر تکست باکس کد زیر را وارد کن:
keyascii=fa(keyascii)