PDA

View Full Version : فارسی کردن کیبورد با دستورات api



kia1349
یک شنبه 01 تیر 1382, 17:11 عصر
اینطوری: :o :lol: :wink:
declare integer ActivateKeyboardLayout in win32api integer,integer
ActivateKeyboardLayout(1025,8) &&for farsi like alt+shiftright
ActivateKeyboardLayout(1033,0) &&for latin like alt+shiftleft
دستور اول برای لود کردن api مربوط به فارسی سازی
دستور دوم برای فعال کردن فانکشن فارسی سازی یا راست به چپ نویسی
معمولا این دستور را با یک علامت مساوی قبل از آن در واقعه gotfocus یک تکس باکس میذارند
دستور دوم برای لاتین کردن یا چپ به راست نویسی است میتوانید پس از اتمام کار در تکس باکس فارسی شده و برای اینکه کیبورد مجددا به حالت لاتین برگرده این فانکشن را در واقعه lostfocus همان تکس باکس قراردهید
البته فونت تکس باکس شما چیزی باشد که فارسی را ساپورت کند

kia1349
یک شنبه 01 تیر 1382, 17:15 عصر
بچه ها خط سوم منظورم 1025,8 میباشد که اینطوری شد البته بعدش هم پرانتز بسته میشه
چیکار میشه کرد دیگه

Mohammad_Mnt
دوشنبه 02 تیر 1382, 00:02 صبح
کیا جان ! اون قسمتی که می خوای کد بنویسی رو انتخاب کن و دکمه Code را بزن تا درست نشون بده .

b_tayefi
دوشنبه 02 تیر 1382, 10:32 صبح
سلام

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

لطفا اگر این مشکل را حل کرده اید بیان کنید

Mohammad_Mnt
دوشنبه 02 تیر 1382, 17:48 عصر
کیا جون این کد فارسی کردن توی اکس پی جواب نمی ده :(

habdolah
شنبه 18 مرداد 1382, 01:31 صبح
طایفی جان سلام

من از دستورات زیر جهت فارسی ولاتین نمودن کیبرد استفاده مینمایم و مشکل وضعیت قبلی کیبرد را ندارم

DECLARE LONG LoadKeyboardLayout IN WIN32API STRING pwszKLID,INTEGER Flags

دستور زیر جهت فارسی در gotfocus
(lnRetCode = LoadKeyboardLayout('00000429', 1

دستور زیر جهت لاتین در gotfocus
(lnRetCode = LoadKeyboardLayout('00000409', 1

Andy
شنبه 18 مرداد 1382, 11:18 صبح
سلام به همگی
در جواب آقای B_TAYEFIN در مورد اینکه از کجا بدونیم لاتین یا فارسیه بایستی بگم که اینکار خیلی آسونه توی GOTFOCUS کنترل با یه شرط تست میکنی که LoadKeyboardLayout T مقدار کدش برابر با کد فارسی هستش یا نه و .....

سرائی-محمدجواد
چهارشنبه 08 شهریور 1385, 11:49 صبح
سلام به همگی
البته یک تابع نیز من دارم که میشود صفحه کلید را فارسی ولاتین نمود.
هرکدام ازدوستان میخواد بگه برایش ایمیل کنم متشکرم

rezaTavak
پنج شنبه 09 شهریور 1385, 09:44 صبح
چرا ایمیل؟ همینجا بگذارید

سرائی-محمدجواد
پنج شنبه 09 شهریور 1385, 11:14 صبح
باسلام مجدد خدمت اساتید خودم

باتوجه به اینکه بیشتر برنامه های من تحت داس وشبکه (فاکس پرو) میباشد وبیشتر

درزمینه شرکتهای تعاونی مصرف میباشد وتازه ویژوال فاکس پرو را شروع کردم به راهنمایی

های شما عزیزان نیازمندم البته بصورت دست گرمی یک سی تا فرمی نوشته ام

وارتباطاتشان نیز خوب است و این فایل را نیز از یکی ازدوستان گرفته ام تقریبا مشابه

دستورات آقا کیا است پرحرفی کردم عذرمیخواهم




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
Return .T.




PARAMETERS KeymodeInValue
Local OldOnError
OldOnError=On("ERROR")
On Error Wait Nowa
DECLARE INTEGER GetKeyboardLayout IN win32api integer ValueGetKeyboardLayout
DECLARE INTEGER ActivateKeyboardLayout IN win32api integer ValueActivateKeyboardLayout
Old_GetKeyboardLayout=GetKeyboardLayout(0)
keymode_loopmax=20
keymode_loopcount=0
Do Case
Case Upper(KeymodeInValue)='FA'
Do While GetKeyboardLayout(0)<>67175425 .AND. GetKeyboardLayout(0)<>70255657 .AND. keymode_loopcount<keymode_loopmax
keymode_loopcount=keymode_loopcount+1
=ActivateKeyboardLayout(1)
EndDo
Case Upper(KeymodeInValue)='EN'
Do While GetKeyboardLayout(0)<>67699721 .AND. keymode_loopcount<keymode_loopmax
keymode_loopcount=keymode_loopcount+1
=ActivateKeyboardLayout(1)
EndDo
Case Upper(KeymodeInValue)='UK'
Do While GetKeyboardLayout(0)<>67699746 .AND. keymode_loopcount<keymode_loopmax
keymode_loopcount=keymode_loopcount+1
=ActivateKeyboardLayout(1)
EndDo
EndCase
If keymode_loopcount=keymode_loopmax
Do While GetKeyboardLayout(0)<>Old_GetKeyboardLayout
=ActivateKeyboardLayout(1)
EndDo
KeymodeOutValue=.F.
Else
KeymodeOutValue=.T.
EndIf
Clear Dlls
On Error &OldOnError
Return KeymodeOutValue

mehran_337
شنبه 11 شهریور 1385, 12:01 عصر
دوست عزیز!
بچه های خوب اینجا همونطوری که به ما درس دادن دست شما هم خواهند گرفت . ضمن اینکه ورود شما رو خوش امد می گم بهتره که برای ارسال کد از "حالت پیشرفته" و دکمه code استفاده کنین.
با تشکر

mojtaba025
سه شنبه 12 دی 1391, 22:27 عصر
سلام به همگی
البته یک تابع نیز من دارم که میشود صفحه کلید را فارسی ولاتین نمود.
هرکدام ازدوستان میخواد بگه برایش ایمیل کنم متشکرم


واسه من ایمیل کن..ممنون
rakhshani_mojtaba25@yahoo.com:لبخندساده: