PDA

View Full Version : فارسی نویسی



Mohammad S
یک شنبه 14 اردیبهشت 1382, 01:01 صبح
سلام خدمت تمامی دلفی کارای عزیز
من می خواهم در ویندوز فارسی، یک برنامه بنویسم طوری که بدون احتیاج به دخالت کاربر برای زدن کلید های Alt+Shift در هر جای برنامه مثلا در یک Edit، کاربر بتواند فارسی بنویسد و یا برعکس اگر زبان صفحه کلید در حال حاضر فارسی است بدون دخالت کاربر و بنا بر نیاز برنامه به انگلیسی تغییر یابد.
البته از دستور ;' application.BiDiKeyboard:='00000429 هم استفاده کرده ام. ولی گویا مشکل دارد زیرا همه جا به درستی کار نمی کند مثلا جایی که باید فارسی شود نمی شود و یا اینکه اگر فارسی شد و در جایی دیگر باید انگلیسی شود، زبان صفحه کلید به انگلیسی تغییر نمی یابد.
لطفا در این مورد مرا راهنمایی فرمایید.
با تشکر
:wink:

Vahid_Nasiri
یک شنبه 14 اردیبهشت 1382, 01:43 صبح
procedure SetFarsi;
var LName:pchar;
begin
getmem(LName,30);
GetKeyboardLayoutName(LName);
if LName<>FLAYOUT then
Activatekeyboardlayout(HKL_NEXT,KLF_REORDER);
end;

procedure SetEnglish;
var LName:pchar;
begin
getmem(LName,30);
GetKeyboardLayoutName(LName);
if LName<>ELAYOUT then
Activatekeyboardlayout(HKL_NEXT,KLF_REORDER);
end

Mohammad S
دوشنبه 15 اردیبهشت 1382, 00:57 صبح
آقا وحید ممنون از جوابتون :D
من از دلفی 5 استفاده می کنم
فقط از دستور ELAYOUT و FLAYOUT خطا می گیره
من به جای اونها از کد معادلشون یعنی '00000409' و '00000429' استفاده کردم و برنامه هم به درستی کار کرد
فقط اگه ممکنه یک کم در مورد دستورات توضیح بیشتری بدهید چون من باید این دستورات را برای هم کلاسیهایم و نیز استادم توضیح دهم
باز هم Mer20+5+5
:wink:

Vahid_Nasiri
دوشنبه 15 اردیبهشت 1382, 01:39 صبح
لطفا برای اطلاعات بیشتر به MSDN مراجعه کنید برای مثال :


The GetKeyboardLayoutName function retrieves the name of the active input locale identifier (formerly called the keyboard layout).

The ActivateKeyboardLayout function sets the input locale identifier (formerly called the keyboard layout handle) for the calling thread or the current process. The input locale identifier specifies a locale as well as the physical layout of the keyboard.

مهدی کرامتی
دوشنبه 15 اردیبهشت 1382, 03:46 صبح
خوب مستقیما کد زبان رو استفاده کنید:

LoadKeyBoardLayout('00000401',0); //Arabic
LoadKeyboardLayout('00000409',0); //English
LoadKeyboardLayout('00000429',0); //Farsi
در ویندوزهای 95, 98, , Me چون ویندوز عربی را فارسی میکنند باید برای تایپ فارسی در حقیقت از خط اول استفاده کنید که زبان عربی را فعال میکند.
اما برای 2000 , XP باید از خط آخر استفاده کنید.