المشاركات : 91
المواضيع 31
:
: 0
الإنتساب : Sep 2009
السلام عليكم
عندي سؤال حول كيفية معرفة اللغة الحالية للوحة المفاتيح هل هي عربية أو فرنسية أو انجليزية
حسب اللغات المثبتة في الجهاز
وشكرا
المشاركات : 778
المواضيع 97
:
: 0
الإنتساب : Nov 2008
وعليكم السلام ورحمة الله,,
اخي الكريم,, الإجآبة عن سؤآلك 100% ليست لدي اي فكرة عنه,,
لكن اتذكر ان احد الإخوة كان كتب موضوع عن ذلك,,
من هنا الموضوع,,
لعل هذا الرآبط يفيدك والله اعلم,,
فرّج همّ المهمومين يا الله
اللهم فك قيد اسرانا و اسرى المسلمين
المشاركات : 91
المواضيع 31
:
: 0
الإنتساب : Sep 2009
شكرا لك أخ شكرا لك اخ al-mob4rm3g
انا لا**** تغيير اللغة بل معرفة اللغة الحالية للوحة المفاتيح هل هي عربية أو فرنسية أو انجليزية او او..
اما بالنسبة لتغيير اللغة فهي كما في الرابط الذي أرسلتهن، ولاتوجد مشكلة معها
انا في انتظار الجديد
وشـــــــــــــــــكرا
المشاركات : 2,293
المواضيع 157
:
: 81
الإنتساب : Dec 2008
وعليكم السلام
أقرأ الدالة:
كود :
function GetWindowsLanguage: string;
var
WinLanguage: array [0..50] of char;
begin
VerLanguageName(GetSystemDefaultLangID, WinLanguage, 50);
Result := StrPas(WinLanguage);
end;
ولتغيير اللغة:
كود :
LoadKeyboardLayout('00000401',klf_activate); //for arabe
LoadKeyboardLayout('00000409',klf_activate); //for anglais
LoadKeyboardLayout('0000040C',klf_activate); //for français
بالتوفيق.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
المشاركات : 91
المواضيع 31
:
: 0
الإنتساب : Sep 2009
سلام
GetSystemDefaultLangID تعطيك فقط اللغة التي يستخدمها النظام
وانا أبحث عن اللغة التي تستخدمها لوحة المفاتيح
وشكرا
المشاركات : 32
المواضيع 3
:
: 0
الإنتساب : Dec 2008
26-10-2009, 12:54 PM
(آخر تعديل لهذه المشاركة: 14-11-2010, 06:42 PM بواسطة kachwahed.)
السلام عليكم و رحمة الله
إليك الحل الآتي أخي العزيز
تفضل الكود
كود :
procedure TForm1.Button1Click(Sender: TObject);
var
lang : string ;
P : array[0..KL_NAMELENGTH-1] of char ;
begin
GetKeyboardLayoutName(P);
lang:=P;
if lang='00000401'then
label1.caption:='Arabe'
else if lang='0000040C'then
label1.caption:='Français';
end;
مع ملاحظة أن قيمة المتغير lang سوف تأخذ قيمة من نوع هيكس و لكل لغة في لوحة المفاتيح لها قيمتها الخاصة في الهكس و هذه قائمة لقيم هكس لعدة لغات للوحة المفاتيح
PHP كود :
00000436: 'Afrikaans' //Afrikaans (1)
0000041C: 'Albanian' //Albanais
00000401: 'Arabic Saudi Arabia' //Arabe Arabie Saoudite
00000801: 'Arabic Iraq' //Arabe Irak
00000C01: 'Arabic Egypt' //Arabe Egypte
00001001: 'Arabic Libya' //Arabe Libye
00001401: 'Arabic Algeria' //Arabe Algerie
00001801: 'Arabic Morocco' //Arabe Maroc
00001C01: 'Arabic Tunisia' //Arabe Tunisie
00002001: 'Arabic Oman' //Arabe Oman
00002401: 'Arabic Yemen' //Arabe Yemen
00002801: 'Arabic Syria' //Arabe Syrie
00002c01: 'Arabic Jordan' //Arabe Jordanie
00003001: 'Arabic Lebanon' //Arabe Liban
00003401: 'Arabic Kuwait' //Arabe Koweit
00003801: 'Arabic UAE' //Arabe Emirats Arabes Unis
00003c01: 'Arabic Bahrain' //Arabe Bahrein
00004001: 'Arabic Qatar' //Arabe Qatar
0000042b: 'Armenian' //Armenien
0000042c: 'Azeri Latin' //Azeri Latin (2)
0000082c: 'Azeri Cyrillic' //Azeri Cyrillique (2)
0000042d: 'Basque' //Basque
00000423: 'Belarusian' //Biélorusse (3)
00000402: 'Bulgarian' //Bulgare
00000403: 'Catalan' //Catalan
00000404: 'Chinese Taiwan' //Chinois Taiwan
00000804: 'Chinese PRC' //Chinois Rép Populaire de Chine
00000c04: 'Chinese Hong Kong' //Chinois Hong Kong
00001004: 'Chinese Singapore' //Chinois Singapour
00001404: 'Chinese Macau' //Chinois Macao
0000041a: 'Croatian' //Croate
00000405: 'Czech' //Tchèque
00000406: 'Danish' //Danois
00000465: 'Divehi' //Divehi (4)
00000413: 'Dutch Standard' //Néerlandais Standard
00000813: 'Dutch Belgian' //Néerlandais Belge
00000409: 'English United States' //Anglais États-Unis
00000809: 'English United Kingdom' //Anglais Royaume-Uni
00000c09: 'English Australian' //Anglais Australie
00001009: 'English Canadian' //Anglais Canada
00001409: 'English New Zealand' //Anglais Nouvelle-Zélande
00001809: 'English Ireland' //Anglais Irlande
00001c09: 'English South Africa' //Anglais Afrique du Sud
00002009: 'English Jamaica' //Anglais Jamaique
00002409: 'English Caribbean' //Anglais Caraïbes
00002809: 'English Belize' //Anglais Belize
00002c09: 'English Trinidad' //Anglais Trinidad
00003009: 'English Zimbabwe' //Anglais Zimbabwe
00003409: 'English Philippines' //Anglais Philippines
00000425: 'Estonian' //Estonien
00000438: 'Faeroese' //Faeroese (5)
00000429: 'Farsi' //Farsi (6)
0000040b: 'Finnish' //Finnois (7)
0000040c: 'French Standard' //Français Standard
0000080c: 'French Belgian' //Français Belgique
00000c0c: 'French Canadian' //Français Canadien
0000100c: 'French Swiss' //Français Suisse
0000140c: 'French Luxembourg' //Français Luxembourg
0000180c: 'French Monaco' //Français Monaco
00000437: 'Georgian' //Géorgien
00000456: 'Galician' //Galicien
00000407: 'German Standard' //Allemand Standard
00000807: 'German Swiss' //Allemand Suisse
00000c07: 'German Austrian' //Allemand Autriche
00001007: 'German Luxembourg' //Allemand Luxembourg
00001407: 'German Liechtenstein' //Allemand Liechtenstein
00000408: 'Greek' //Grec
00000447: 'Gujarati' //Gujarati (8)
0000040d: 'Hebrew' //Hébreu
00000439: 'Hindi' //Hindi (9)
0000040e: 'Hungarian' //Hongrie
0000040f: 'Icelandic' //Islandais
00000421: 'Indonesian' //Indonésien
00000410: 'Italian Standard' //Italien Standard
00000810: 'Italian Swiss' //Italien Suisse
00000411: 'Japanese' //Japonais
0000044b: 'Kannada' //Kannada (10)
0000043f: 'Kazakh' //Kazakh (11)
00000457: 'Konkani' //Konkani (12)
00000412: 'Korean' //Coréen
00000440: 'Kyrgyz' //Kirghiz (13)
00000426: 'Latvian' //Letton (14)
00000427: 'Lithuanian' //Lituanien
0000042f: 'Macedonian' //Macédonien
0000043e: 'Malay Malaysia' //Malais Malaisie
0000083e: 'Malay Brunei Darussalam' //Malais Brunei Darussalam
0000044e: 'Marathi' //Marathi (15)
00000450: 'Mongolian' //Mongol
00000414: 'Norwegian Bokmal' //Norvégien Bokmal
00000814: 'Norwegian Nynorsk' //Norvégien Nynorsk
00000415: 'Polish' //Polonais
00000416: 'Portuguese Brazilian' //Portuguais Brésilien
00000816: 'Portuguese Standard' //Portuguais Standard
00000446: 'Punjabi' //Pendjabi (16)
00000418: 'Romanian' //Roumain
00000419: 'Russian' //Russe
0000044f: 'Sanskrit' //Sanskrit (17)
0000081a: 'Serbian Latin' //Serbe Latin
00000c1a: 'Serbian Cyrillic' //Serbe Cyrillique
0000041b: 'Slovak' //Slovaque
00000424: 'Slovenian' //Slovène
0000040a: 'Spanish Traditional Sort' //Espagnol Traditionnel
0000080a: 'Spanish Mexican' //Espagnol Mexicain
00000c0a: 'Spanish Modern Sort' //Espagnol Moderne
0000100a: 'Spanish Guatemala' //Espagnol Guatemala
0000140a: 'Spanish Costa_Rica' //Espagnol Costa Rica
0000180a: 'Spanish Panama' //Espagnol Panama
00001c0a: 'Spanish Dominican Republic' //Espagnol Rép Dominicaine
0000200a: 'Spanish Venezuela' //Espagnol Vénézuela
0000240a: 'Spanish Colombia' //Espagnol Colombie
0000280a: 'Spanish Peru' //Espagnol Pérou
00002c0a: 'Spanish Argentina' //Espagnol Argentine
0000300a: 'Spanish Ecuador' //Espagnol Équateur
0000340a: 'Spanish Chile' //Espagnol Chili
0000380a: 'Spanish Uruguay' //Espagnol Uruguay
00003c0a: 'Spanish Paraguay' //Espagnol Paraguay
0000400a: 'Spanish Bolivia' //Espagnol Bolivie
0000440a: 'Spanish El Salvador' //Espagnol El Salvador
0000480a: 'Spanish Honduras' //Espagnol Honduras
00004c0a: 'Spanish Nicaragua' //Espagnol Nicaragua
0000500a: 'Spanish Puerto Rico' //Espagnol Porto Rico
00000441: 'Swahili' //Swahili (18)
0000041d: 'Swedish' //Suédois
0000081d: 'Swedish Finland' //Suédois Finlande
0000045a: 'Syriac' //Syriaque (19)
00000449: 'Tamil' //Tamoul (20)
00000444: 'Tatar' //Tatar (21)
0000044a: 'Telugu' //Telugu (22)
0000041e: 'Thai' //Thaï (23)
0000041f: 'Turkish' //Turc
00000422: 'Ukrainian' //Ukrainien
00000420: 'Urdu' //Ourdou (24)
00000443: 'Uzbek Latin' //Ouzbek Latin (25)
00000843: 'Uzbek Cyrillic' //Ouzbek Cyrillique (25)
0000042a: 'Vietnamese'
موفق بإذن الله
المشاركات : 2,293
المواضيع 157
:
: 81
الإنتساب : Dec 2008
27-10-2009, 09:44 AM
(آخر تعديل لهذه المشاركة: 18-05-2011, 07:58 PM بواسطة kachwahed.)
للتغيير إلى لوحة مفاتيح معينة وغير ذلك إليك هذا:
كود :
Changer la langue du clavier
//Pour changer le langue
var
Lang: HKL;
begin
Lang := LoadKeyboardLayout(pcKeyboard, 0);
ActivateKeyboardLayout(Lang, KLF_ACTIVATE);
if SystemParametersInfo(SPI_SETDEFAULTINPUTLANG,0,@Lang,SPIF_SENDCHANGE)
then showmessage('OK ça marche') else showmessage('Non raté !');
//*************************************************************************
//Ou directement:
LoadKeyboardLayout(pcKeyboard, KLF_ACTIVATE);
//Où pcKeyboard est l'une des valeurs suivantes:
'00000401' - Arabe
'0000040C' - Français
'00000409' - Anglais
'00000407' - Allemagne
//Par exemple:
LoadKeyboardLayout('00000401',KLF_ACTIVATE); //pour arabe
LoadKeyboardLayout('00000409',KLF_ACTIVATE); //pour anglais
LoadKeyboardLayout('0000040C',KLF_ACTIVATE); //pour français
{Pour d'autres langues visiter:
http://msdn.microsoft.com/en-us/goglobal/bb964664.aspx
ou dans le registre:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts
}
//*************************************************************************
//Fonction pour détecter le code de la langue actuelle
function GetLayout: string;
begin
SetLength(Result, KL_NAMELENGTH+1);
if not GetKeyBoardLayoutName(PChar(Result)) then
Result := 'Error: No layout name read';
end;
{*************************************************************************
Pour spécifier une langue précise (par exemple: Français Canadienne)
Pas de code inconnue comme 409 ou 419.}
var
kbCOde : LongWord;
kbString : Array[0..9] of char;
begin
//Français Canadienne:
kbCode := (SUBLANG_FRENCH_CANADIAN shl 10) or LANG_FRENCH;
//Pour Français Standard:
//kbCode := (SUBLANG_DEFAULT shl 10) or LANG_FRENCH;
//Convertir le code binaire en chaîne String:
StrPCopy(kbString, IntToHex(kbCode, 8));
//Pour voir le code:
ShowMessage(kbString);
//Basculer ver la langue
LoadKeyboardLayout(@kbString, KLF_ACTIVATE);
end;
//Pour les autres langues voir l'unité: windows.pas
معذرة على الفرنسية لمن لا يفهمها.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
المشاركات : 2,293
المواضيع 157
:
: 81
الإنتساب : Dec 2008
طريقة أبسط:
PHP كود :
function GetKeyboardLayoutNameStr: string;
begin
SetLength(Result, 255);
Result := GetLocaleStr(GetUserDefaultLangID, LOCALE_SLANGUAGE, '')
end;
المشاركات : 98
المواضيع 36
:
: 0
الإنتساب : Oct 2010
السلام عليكم
**** تغيير اللغة لعنصر واحد وهو مثلا dbedit5 وdbedit الأخرى تبقى باللغة العربية يعني إذا صار المؤشر في dbedit5 تحول من العربيةإلى الفرنسية.
المشاركات : 2,293
المواضيع 157
:
: 81
الإنتساب : Dec 2008
وعليكم السلام ورحمة الله وبركاته
استخدم الأحداث OnEnter & OnExit بمثل:
PHP كود :
procedure TForm1.DBEdit2Enter(Sender: TObject);
begin
LoadKeyboardLayout('00000401',KLF_ACTIVATE); //Arabic
end;
procedure TForm1.DBEdit2Exit(Sender: TObject);
begin
LoadKeyboardLayout('0000040C',KLF_ACTIVATE); //French
end;
بالتوفيق.