PDA

View Full Version : تغییر زبان به صورت اتوماتیک



smakhavan
یک شنبه 22 مهر 1386, 08:46 صبح
پرسیده بودم که :
چه جوری هنگام تایپ در دو edit به طور اتوماتیک بین فارسی و انگلیسی سوییچ کنیم. مثلا یکی باید نامی را به فارسی تایپ کنیم و در دیگری نام به انگلیسی.
از کد زیر برای این کار استفاده کردم اما جواب نمیده.


procedure TForm1.Edit1Enter(Sender: TObject);
begin
Application.BiDiKeyboard:='00000429';
end;

procedure TForm1.Edit2Enter(Sender: TObject);
begin
Application.BiDiKeyboard:='00000409';
end;

و آقای تقی زاده جواب داده بود که از کد زیر استفاده کنم:


ActivateKeyboardLayout(HKL_NEXT, KLF_ACTIVATE);


نمیدونم چرا اون تاپیک را قفل کردند، مگه من چیز خلافی گفتم یا اینکه اشتباه شده!!

اما سوال جدید من در این باره:
با کد ایشون از یک زبان به زبان بعدی تعریف شده توی سیستم میریم نه اینکه هر زبانی که بخواهیم برای اون ادیت داشته باشیم. دو تا مشکل به وجود میاد:
اول اینکه اگه طرف توی سیستمش بیشتر از دو زبان تعریف شده باشه اون زبونی که من میخواهم را الزاما انتخاب نمیکنه.
دومین مشکل هم که خیلی مهمتره اینه که اگه به فرض سه تا ادیت روی فرم داشته باشیم و بخواهیم دوتای اول فارسی و سومی انگلیسی باشه مشکل به وجود میاد!

manvaputra
یک شنبه 22 مهر 1386, 09:31 صبح
ActivateKeyboardLayout(HKL_NEXT, KLF_ACTIVATE);دوست عزیز این کد رو به شکل زیر اصلاح کن:

LoadKeyboardLayout('00000407', KLF_ACTIVATE);و به جای XXXXXX کد زبان دلخواهتو بذار.

manvaputra
یک شنبه 22 مهر 1386, 09:33 صبح
دلیل قفل شدن هم فکر می کنم به علت تکراری بودنش بود مدیران محترم همیشه این موضوع رو هنوان کردندکه قبل از باز کردن که مبحث اول سایت رو جستجو کنید که تکراری نباشه

smakhavan
یک شنبه 22 مهر 1386, 10:46 صبح
دوست عزیز این کد رو به شکل زیر اصلاح کن:

ActivateKeyboardLayout('XXXXXXXX', KLF_ACTIVATE);و به جای XXXXXX کد زبان دلخواهتو بذار.

1) ممنون.
2) من که چیزی در این باره توی سایت ÷یدا نکردم. اگه شما سراغ دارین لینک بدین
3) شما خودتون این کد را تست کردین پارامتر اول یک متغیر از نوع بایت است (تایپ HKL) ولی کد زبانها از نوع رشته ای!!؟
4) بازهم از کمکتون ممنون میشم

manvaputra
یک شنبه 22 مهر 1386, 12:08 عصر
با سلام دوست عزیز اشتباه عجیبی کردم منظور کد زیر بود:

LoadKeyboardLayout('XXXXXXXX', KLF_ACTIVATE);

yalameh
یک شنبه 22 مهر 1386, 15:15 عصر
;'Application.BiDiKeyboard := '00000429
;'Application.NonBiDiKeyboard := '00000409

دستور فوق را در قسمت Project-->view source وارد کنید( البته بعد از دستور ;Application.Initialize) . از این به بعد در هر کدام از فرمها اگر ادیت باکس را راست به چپ ( Right to left) کردیم فارسی تایپ می شود و هرکدام چپ به راست ( left to right) بود انگلیسی تایپ می شود .