PDA

View Full Version : آماده کردن تایپ فارسی



یعقوب
سه شنبه 27 مرداد 1383, 23:31 عصر
با سلام.
در ویندوزهای فارسی مثل پارسا و XP و... که امکان تایپ فارسی دارند چطور توسط برنامه صفحه کلید را فارسی کنیم. تا کاربر به محض تایپ کردن فارسی بنویسد و نیاز نباشد که کاربر با کلید های مربوطه صفحه کلید را فارسی کند؟
لطفا کد مربوطه را بنویسید.

خیلی متشکرم

Mohammad S
چهارشنبه 28 مرداد 1383, 00:47 صبح
چندین مرتبه تا به حال جواب داده شده باید جستجو می کردید به هر حال:

procedure TMain_Form.SetFarsi;
var LName:pchar;
begin
getmem(LName,30);
GetkeyboardLayoutName(LName);
if LName<>'00000429' then
Activatekeyboardlayout(HKL_NEXT,KLF_REORDER);
end;

procedure TMain_Form.SetEnglish;
var LName:pchar;
begin
getmem(LName,30);
GetkeyboardLayoutName(LName);
if LName<>'00000409' then
Activatekeyboardlayout(HKL_NEXT,KLF_REORDER);
end;

توابع فوق رو در اولین یونیت برنامه ات بنویس و سپس با دستورات SetFarsi یا SetEnglish، زبان صفحه کلید را تغییر بده.
البته ممکنه دوستان دیگه فقط این کار رو در یک خط انجام بدن (با شماره 00000409) ولی من قبلا که تست کردم بعضی وقتها مشکل داشت و درست جواب نمی داد ولی کد فوق تا حالا مشکلی برای من نداشته.

فقط یک نکته رو توجه کن که اگر در ویندوزی بیشتر از 2 زبان نصب باشه، کد فوق جواب نمی ده در واقع بین این زبانها حرکت می کنه مثلا از فارسی به عربی بعد به انگلیسی و دوباره روز از نو و ....... :wink:

یعقوب
چهارشنبه 28 مرداد 1383, 16:54 عصر
سلام.
ببخشید که من زیاد با این رویه ها و تابع ها آشنایی ندارم.


توابع فوق رو در اولین یونیت برنامه ات بنویس

یعنی دقیقا کجای یونیت بذارم؟ :متفکر:

یه سؤال دیگه: اگه اون رو توی اولین یونیت برنامه بذارم‌‌‍. از توی هر یونیت دیگه که توی برنامه باشه میشه خوندش و یا باید حتما در قسمت Uses بیارمش؟؟!!!

خیلی متشکرم

MFCGalaxy
چهارشنبه 28 مرداد 1383, 18:20 عصر
Application.BiDiKeyBoard := 00000429

Mohammad S
پنج شنبه 29 مرداد 1383, 13:30 عصر
دو رویه فوق را بعد از دستور implementation در یونیت اولیه برنامه ات قرار بده. فرض بر این است که نام فرم شما Main_Form می باشد. همچنین در قسمت public فرم (قبل از implementation ) دستورات زیر را بنویس:

procedure SetFarsi;
procedure SetEnglish;
حال در هر فرمی که این فرم (Main_Form) را Use کنی، به دو رویه SetFarsi و SetEnglish دسترسی داری.


Application.BiDiKeyBoard := 00000429
گفتم من قبلا با این دستور مشکل داشتم (یادم نیست ولی فکر می کنم زمانی بود که از ویندوز 98 پارسا استفاده می کردم به نظرم کدش متفاوت بود :? ).
ولی با رویه هایی که من نوشتم (البته خودم ننوشتم :wink: ) به مشکل برخورد نمی کنید چون این کدها، زبان فعال صفحه کلید را جابجا می کند.

موفق باشی.

یعقوب
جمعه 30 مرداد 1383, 14:24 عصر
مرسی موفق شدم :flower: :kiss:
محمد جان همونطور که گفتی اون کد یک خطی توی پارسا 99 خطا داد. :wink:

خیلی ممنون