delphi4arab منتديات دلفي للعرب
طريقة تغيير إتجاه النص في Edit حسب اللغة - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : طريقة تغيير إتجاه النص في Edit حسب اللغة (/showthread.php?tid=1331)

الصفحات: 1 2


طريقة تغيير إتجاه النص في Edit حسب اللغة - kachwahed - 25-11-2009

في الرابط السابق تجد كل الدوال التي تحتاجها فقط حاول وجرب...
مثال:
كود :
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
إذا لم يكن هذا المطلوب فوضح جيدا. بالتوفيق أخي.



طريقة تغيير إتجاه النص في Edit حسب اللغة - أبو معاذ - 25-11-2009

السلام عليكم ورحمة الله و بركاته ،
شرح فلاشي لتثبيت مكونات دلفي
http://www.delphi4arab.net/forum/showthread.php?tid=490


طريقة تغيير إتجاه النص في Edit حسب اللغة - khiro.alg - 13-03-2010

أو أن يكون مثلا
عندما يكون في edit الحرف الأول عربي يكون إتجاه النص من اليمين إلى اليسار
وعندما يكون أول حرف غير عربي يكون إتجاه النص من اليسار إلى اليمين
لا أعرف إستخدام تعليمة Length و array
أظن أن الحل بإستخدامهما


طريقة تغيير إتجاه النص في Edit حسب اللغة - shagrouni - 13-03-2010

السلام عليكم

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

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; 



طريقة تغيير إتجاه النص في Edit حسب اللغة - محمد عبد العزيز - 13-03-2010


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



طريقة تغيير إتجاه النص في Edit حسب اللغة - khiro.alg - 15-03-2010

شكرا لكم شباب
B.M.AbdelAziZ - كيف يستعمل ذلك المكون؟وهل ينفعني فيما أبحث عنه؟


طريقة تغيير إتجاه النص في Edit حسب اللغة - khiro.alg - 21-04-2010

شباب
للتوضيح أكثر
كبف يمكنني معرفة الحرف الأول في Edit
إن كان حرف عربي يجعل النص من اليمين لليسار
وإن كان غير ذلك يبقى الإسجاه من اليسار لليمين
لم أعرف إستعمال Length و array
array لوضع الحروف العربية وتحديدها والتحقق منها

Length لمعرفة إن كان الحرف الأول موجود في array أم لا
بارك الله فيكم وأرجـو أنكم فهمتم القصد



طريقة تغيير إتجاه النص في Edit حسب اللغة - TF6M - 30-04-2010

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]