View Full Version : درخواست کمک در خصوص تایپ فارسی
سعید اسلامی
چهارشنبه 25 آبان 1384, 12:51 عصر
با سلام
آیا کس اطلاع دارد که در موقع ورود اطلاعات در textbox یا ..... کی برد بصورت اتوماتیک فارسی شود؟
و احتیاجی به گرفتن ترکیبی کلید ALT+RSHIFT نباشد
javad_hosseiny
چهارشنبه 25 آبان 1384, 13:51 عصر
با استفاده از کدهای api در ابتدای اجرای برنامه کد فارسی کردن صفحه کلید را فعال کنید و سپس در هر object و یا ... دیگری که می خواهید فارسی بنویسید آن را فراخوانی کنید و اگر کل محیط بصورت فارسی است در ابتدای برنامه آن را فراخوانی کرده و در تمام محیط برنامه دارای صفحه کلید فارسی باشید.
و این هم یک نمونه روتین جهت انجام این کار:
PROCEDURE KEYMODE
PARAMETERS KeymodeInValue
If !Vartype(KeymodeInValue)=="C"
Return .F.
EndIf
Do Case
Case "WINDOWS 5" $ Upper(OS())
DECLARE LONG LoadKeyboardLayout IN WIN32API STRING pwszKLID,INTEGER Flags
Do Case
Case Upper(KeymodeInValue)='FA'
lnRetCode = LoadKeyboardLayout('00000429', 1)
Case Upper(KeymodeInValue)='EN'
lnRetCode = LoadKeyboardLayout('00000409', 1)
EndCase
Other
Declare Integer ActivateKeyboardLayout In Win32Api Integer,Integer
Do Case
Case Upper(KeymodeInValue)='FA'
ActivateKeyboardLayout(1025,8)
Case Upper(KeymodeInValue)='EN'
ActivateKeyboardLayout(1033,0)
EndCase
EndCase
و هر جا که نیاز به فراخوانی آن بود جهت فارسی کردن KEYMODE('FA') و جهت انگلیسی کردن KEYMODE('EN') را وارد کنید
البته اگر جستجو کنید می بینید که در این رابطه زیاد بحث شده و مطالب بیشتری بدست خواهید آورد
سعید اسلامی
چهارشنبه 25 آبان 1384, 19:34 عصر
آقا جواد متشکرم - سعید اسلامی
علی کلاهدوزان
پنج شنبه 26 آبان 1384, 12:11 عصر
خیلی کد نوشته برات با سه خط حله
rezaTavak
پنج شنبه 26 آبان 1384, 12:28 عصر
سلام
اینم کدی که من استفاده میکنم
DECLARE LoadKeyboardLayout IN WIN32API String,integer
IF OS(3)="4"
LoadKeyboardLayout("00000401",1)
ELSE
LoadKeyboardLayout("00000429",1)
ENDIF
javad_hosseiny
پنج شنبه 26 آبان 1384, 13:04 عصر
البته نمونه استفاده از این کد api بسیار است
ولی وقتی بخواهی بصورت روتین از آن استفاده کنی (بصورت فایل جدا نه طراحی داخل فرم) بالطبع دستور procedure اضافه می شود
و وقتی بخواهی مطمئن از ارسال پارامتر توسط کاربر بشی (شاید کسی بگه که خوب تابع را خودمان استفاده می کنیم و از پارامترش مطمئن هستیم) کنترل نوع مقدار پارامتر ورودی الزامی است (Vartype)
و وقتی بخواهی هر دو حالت تبدیل به صفحه کلید فارسی و تبدیل به صفحه کلید انگلیسی را داشته باشی باید تابع را دوبار فراخوانی کنی و ...
و البته نهایتا به عنوان صرفه جوئی می توان بجای فراخوانی از دو تابع LoadKeyboardLayout و ActivateKeyboardLayout فقط از اولی استفاده کرد و نهایتا یکی دو خط کد پروسیجر را کاهش داد
والا اگر بحث صرفه جویی باشد در دو خط هم می توان خلاصه کرد:
DECLARE LoadKeyboardLayout IN WIN32API String,integer
LoadKeyboardLayout(IIF(OS(3)='4',"00000401","00000429"),1)
و حتی با ساپورت دو زبانه بودن تابع (انگلیسی و فارسی)
PARAMETER LN && 'EN':English 'FA': Farsi
DECLARE LoadKeyboardLayout IN WIN32API String,integer
LoadKeyboardLayout(IIF(LN='EN',"00000409",IIF(OS(3)='4',"00000401","00000429")),1)
binyaz2003
پنج شنبه 26 آبان 1384, 15:13 عصر
javad_hosseiny :تشویق:
elham moradi
چهارشنبه 08 آبان 1387, 03:46 صبح
با سلام
از راهنمایی شما بینهایت ممنونم
خیلی برایم مفید واقع شد
مرسی و سپاس بیکران
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.