طريقة تغيير إتجاه النص في Edit حسب اللغة
#11
في الرابط السابق تجد كل الدوال التي تحتاجها فقط حاول وجرب...
مثال:
كود :
function GetLayout: string; begin SetLength(Result, KL_NAMELENGTH+1); if not GetKeyBoardLayoutName(PChar(Result)) then Result := 'Error: No layout name read'; end; procedure TForm1.Button1Click(Sender: TObject); begin GetLayout; case IndexText(GetLayout, ['00000401', '0000040C','00020401', '00010401']) of 0: Edit1.Text := 'Arabic (101)'; 1: Edit1.Text := 'Français'; 2: Edit1.Text := 'Arabe (102) AZERTY'; 3: Edit1.Text := 'Arabe (102)'; end; end;
للغات الأخرى:
كود :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\0000040C
إذا لم يكن هذا المطلوب فوضح جيدا. بالتوفيق أخي.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد
#12
السلام عليكم ورحمة الله و بركاته ،
شرح فلاشي لتثبيت مكونات دلفي
http://www.delphi4arab.net/forum/showthread.php?tid=490
الرد
#13
أو أن يكون مثلا
عندما يكون في edit الحرف الأول عربي يكون إتجاه النص من اليمين إلى اليسار
وعندما يكون أول حرف غير عربي يكون إتجاه النص من اليسار إلى اليمين
لا أعرف إستخدام تعليمة Length و array
أظن أن الحل بإستخدامهما
ومن يتهيب صعود الجبال يعش أبد الدهر بين التلال و الحفر
الرد
#14
السلام عليكم

هذه محاولة مختصرة:

PHP كود :
function GetLocalEnglishName: string;
var
  
LocalId: integer;
  
LocalVal: array[0..63] of Char;
  
S : string;
begin

  S 
:= IntToHex(GetKeyboardLayout(0), 8);
  
LocalId := StrToInt('$' + Copy(s, Length(s)- 3, 4));

  
GetLocaleInfo(LocalId, LOCALE_SENGLANGUAGE, @LocalVal, 64);
  
result := LocalVal;
end;

procedure SetTextOrientation(AEdit: TCustomEdit; RightToLeft: boolean);
var
  
iStyle: integer;
begin
  iStyle 
:= GetWindowLong(AEdit.Handle, GWL_EXSTYLE);

  if 
RightToLeft then
  begin
    
if (iStyle and WS_EX_Right) <> WS_EX_Right then
      iStyle 
:= iStyle + WS_EX_Right;

    if (
iStyle and WS_EX_RTLREADING) <> WS_EX_RTLREADING then
      iStyle 
:= iStyle + WS_EX_RTLREADING;

    if (
iStyle and WS_EX_LeftSCROLLBAR) <> WS_EX_LeftSCROLLBAR then
      iStyle 
:= iStyle + WS_EX_LeftSCROLLBAR;


    
SetWindowLong(AEdit.Handle, GWL_EXSTYLE, iStyle);
  
end
  
else
    
SetWindowLong(AEdit.Handle, GWL_EXSTYLE, iStyle - WS_EX_Right
                                                    
- WS_EX_RTLREADING
                                                    
- WS_EX_LeftSCROLLBAR);


end;


procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
  SetTextOrientation
(Memo1, (GetLocalEnglishName = 'Arabic'))
end; 
الرد
#15

السلام عليكم
الق نظرة على KeyboardLayout مكون الاخ خالد الشقروني
[صورة: keyblayoutdemologin.gif]
مجاني ومفتوح المصدر
كود :
http://shagrouni.com/english/software/keyboardlayout.html


الملفات المرفقة
.rar   kyblayout.rar (الحجم : 9.6 ك ب / التحميلات : 39)
الرد
#16
شكرا لكم شباب
B.M.AbdelAziZ - كيف يستعمل ذلك المكون؟وهل ينفعني فيما أبحث عنه؟
ومن يتهيب صعود الجبال يعش أبد الدهر بين التلال و الحفر
الرد
#17
شباب
للتوضيح أكثر
كبف يمكنني معرفة الحرف الأول في Edit
إن كان حرف عربي يجعل النص من اليمين لليسار
وإن كان غير ذلك يبقى الإسجاه من اليسار لليمين
لم أعرف إستعمال Length و array
array لوضع الحروف العربية وتحديدها والتحقق منها

Length لمعرفة إن كان الحرف الأول موجود في array أم لا
بارك الله فيكم وأرجـو أنكم فهمتم القصد
ومن يتهيب صعود الجبال يعش أبد الدهر بين التلال و الحفر
الرد
#18
khiro.alg كتب :شباب
للتوضيح أكثر
1- كبف يمكنني معرفة الحرف الأول في Edit
2- إن كان حرف عربي يجعل النص من اليمين لليسار
وإن كان غير ذلك يبقى الإسجاه من اليسار لليمين
3- لم أعرف إستعمال Length و array
..... لوضع الحروف العربية وتحديدها والتحقق منها
..... لمعرفة إن كان الحرف الأول موجود في array أم لا

السلام عليكم و رحمة الله و بركاته

1- Edit -> الخاصية Text , من النمط String (سلسلة نصية -جدول-)
الخانة 0 تخزن طول السلسلة .
الخانة 1 عنوان المحرف رقم واحد .

- إذا لمعرفة الحرف الأول يكفي كتابة :
PHP كود :
ShowMessage(Edit.Text[1]); 

2- هنا يوجد العديد من الحلول , لتحديد طبيعة الحرف ممكن
نقارن قيمة AScii الخاصة به , أو نراقب حالة 'لغة النظام المفعلة' عند كتابة الحرف ....
- لذا لاحظ هنا
- أيضا هنا
- طريقة معرفة AScii الحرف مثال بسيط : هنا

3- أولا تابع الدرس الخامس : الجداول و المصفوفات
- Length تعيد طول البارامتر الممرر لها .

بالتوفيق ,,
[url=http://www.delphi4arab.net/forum/showthread.php?tid=637][/url]
I'M Fly Like A G6

الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم