14-08-2010, 03:14 PM
لتحديد لغة إقليمية معينة من خلال ثوابت معرفة في Windows.pas يمكن استخدام الـ Macro الذي يعيد الرمز التعريفي للغة:
المصدر:
في دلفي:
usPrimaryLanguage: تأخذ اللغة المستخدمة نستخدم: LANG_ARABIC/LANG_ENGLISH
usSubLanguage: تأخذ إقليم اللغة: SUBLANG_ARABIC_SYRIA/SUBLANG_ARABIC_EGYPT
لتسهيل الاستخدام نعيد كتابته في تابع يعيد string عوضا عن Word
ونستخدم TSpeedButton كزر للتغيير لأنه لا يغير موضع المؤشر (Cursor Focus). المثال:
بقية الثوابت معرفة في Windows.pas.
كود :
#define [color=DarkSlateBlue]MAKELANGID[/color](p, s) ((((WORD) (s)) << 10) | (WORD) (p))كود :
http://msdn.microsoft.com/en-us/library/bb202928.aspxكود :
function [color=DarkSlateBlue]MAKELANGID[/color](usPrimaryLanguage, usSubLanguage: LANGID): WORD;
begin
Result := ([color=DarkGreen]usSubLanguage [/color]shl 10) + [color=Blue]usPrimaryLanguage[/color];
end;usSubLanguage: تأخذ إقليم اللغة: SUBLANG_ARABIC_SYRIA/SUBLANG_ARABIC_EGYPT
لتسهيل الاستخدام نعيد كتابته في تابع يعيد string عوضا عن Word
ونستخدم TSpeedButton كزر للتغيير لأنه لا يغير موضع المؤشر (Cursor Focus). المثال:
PHP كود :
function GetLangID(usPrimaryLanguage, usSubLanguage: LANGID): string;
begin
Result := IntToHex((usSubLanguage shl 10) + usPrimaryLanguage, 8);
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
LoadKeyboardLayout(pchar(GetLangID(LANG_ARABIC, SUBLANG_ARABIC_SAUDI_ARABIA)), KLF_ACTIVATE);
end;

