الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تبديل لوحة المفاتيح من لاتيني إلى عربي والعكس

مغلق
بدأه sami2000 في 13 يوليو 2001 · 10 رد · 3,760 مشاهدة · في أرشيف منتدى الدلفي
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ...

هذا الكود لتبديل لوحة المفاتيح من لاتيني إلى عربي

if getkeyboardlayout(0)=67699721 then
activatekeyboardlayout(1,0);

============================================

هذا الكود لتبديل لوحة المفاتيح من عربي إلى لاتيني

if getkeyboardlayout(1)=67699721 then
activatekeyboardlayout(1,0);

===============================================

هذا الكود للمبادلة تلقائياً فإذا كان عربي بدله الى لاتيني وإذا كان لاتيني بدله الى عربي

activatekeyboardlayout(hkl_next,klf_reorder);

=======================================

هذا لإظهار اللغة الحالية

var
nam:pchar;
begin
if getKeyboardLayoutname(nam) then
edit1.text:=strpas(nam);

سيحتوي النص على الآتي إمّا :-

00000409

ومعناه اللغة لاتيني

أو

00000401

ومعناه اللغة عربي

تم تعديل هذه المشاركة بواسطة ORWA في 20 فبراير 2005 في 22:58

#2

اهلا وسهلا بك ياااخ sami2000

في هذا المنتدى

ومشكور وماقصرت على هالمعلومات الجميله

وتقبل اطيب تحياتي اخوك SUM

#3

السلام عليكم ... حياك الله ياأستاذ sum حقيقة جميع مقالاتك عن دلفي جدا مفيدة والى الامام دائما وفقك الله .

#4

هذا بخصوص تغيير لوحة المفاتيح

فما هو الكود الازم لتغيير الواجهة اى جعل المؤشر فى الإتجاه العربى

#5

أخي العزيز لديك الوصلة التالية والت تحوي على عنصر

يساعدك كثيرا في تغيير اتجاه لوحة المفاتيح وهو طبعا تغليف

للتابع API الخاص بتغيير اتجاه لوحة المفاتيح

http://www.shagrouni.com/english/software/...oardlayout.html

#6

السلام عليكم ... الاخ newmember

بالنسبة للأداة اللي ذكرها الاخ محمد غياث فهي مثل الكود اللي ذكرته سابقاً .. بالنسبة لتغيير اتجاه المؤشر فأعتقد لو كان لديك دلفي 5 فستحل المشكلة من خلال الخاصية BiDiMode

فمثلاً لتغيير اتجاه المؤشر الى الاتجاه العربي في خانة النص

edit1.BiDiMode:=bdRightToLeft;

ولتغيير اتجاه المؤشر الى الاتجاه الانجليزي

edit1.BiDiMode:=bdLeftToRight;

وهكذا حتى مع الفورم form تستخدم الخاصية السابقة BiDiMode

form1.BiDiMode:=bdRightToLeft;

أما اذا لم يكن لديك دلفي 5 فأرجو منك التوضيح ؟

#7

الأخ sami2000 شكرا على اهتمامك وبقية الإخوة

لقد استخدمت الكود التالى لتغيير لوحة المفاتيح من english الى العربية

LoadKeyBoardLayout('00000401',1) ;

وهو يعمل أما لتغيير اتجاه المؤشر فلم أجد الكود المطلوب فأرجوا منك المساعدة مع العلم بأننى أشتغل على الدلفى 3 الآن

شكرا مقدما

#8

السلام عليكم .. هذا المثال سوف يقوم بتحويل النافذة الى الاتجاه العربي وايضا جميع النصوص سوف تتحول الى العربي وحتى الكتابة ستصبح عربي 100% وارجو ان تجربها وترد علي لأني ليس عندي دلفي 3 ولكني جربتها على دلفي 5 وبهذا المثال لاتحتاج الى تغيير لوحة المفاتيح

لأنها سوف تتحول الى العربي بهذا الكود :-

procedure TForm1.FormCreate(Sender: TObject);

const

WM_USER = $0400 ;

EM_SETALIGN = WM_USER+$41 ;

ES_RTL_READING = $8000 ;

Var

OldStyle, NewStyle : Longint;

Result,I : Integer;

begin

If GetKeyBoardLayout(0) =67699721 then ActivateKeyBoardLayout(1,0);

OldStyle := GetWindowLong(handle,GWL_EXStyle);

NewStyle := OldStyle Or (WS_EX_RTLREADING or WS_EX_RIGHT or WS_EX_LEFTSCROLLBAR);

Result := SetWindowLong(handle,GWL_EXStyle,NewStyle);

Refresh;

For I := 0 to ComponentCount -1 do

If Components is TCustomEdit then

SendMessage((Components as TCustomEdit).Handle, EM_SETALIGN, ES_RIGHT + ES_RTL_READING, 0) ;

end;

لاتنسانا من دعائكم الصالح لنا ..

#9

شكرا أخ sami2000 لقد قمت بتجربة الإجراء على الدلفى 3 وقد اشتغل 100% مع تعديل بسيط جدا لمن اراد ان يجرب :

If Components is TCustomEdit

SendMessage((Components as TCustomEdit).Handle,

التعديل هو الموجودة فى السطرين السابقين اما باقى الإجراء فهو كما تفضل به الأخ sami2000 مشكورا

وياريت ياأخ sami2000 لو تتكرم بشرح ولو بسيط لهذا الإجراء لكى تزيد الفائدة

ولاتنسوا الدعاءالصالح لأخيكم sami2000 جزاه الله خيرا.

#10

شكرا أخ sami2000 لقد قمت بتجربة الإجراء على الدلفى 3 وقد اشتغل 100% مع تعديل بسيط جدا لمن اراد ان يجرب :

If Components is TCustomEdit

SendMessage((Components as TCustomEdit).Handle,

التعديل هو وجود حرف i بين القوسين التاليين

[ ]

بعد components فىالسطرين السابقين

لأدرى لما لم يظهر الحرف i بين القوسين فى الرد السابق

من المؤكد أن الأخ sami2000 قد كتبها أيضا ولكنها لم تظهر

اما باقى الإجراء فهو كما تفضل به الأخ sami2000 مشكورا

وياريت ياأخ sami2000 لو تتكرم بشرح ولو بسيط لهذا الإجراء لكى تزيد الفائدة

ولاتنسوا الدعاءالصالح لأخيكم sami2000 جزاه الله خيرا.

#11

السلام عليكم ... فعلاً لم انتبه فقط قمت بنسخه ولصقه هنا ولم اراجعه على اساس تم اللصق مثل النسخ

طبعاً هذا الكود ارسال رسالة الى مقبض الآداة Tedit لتقوم بتحويل الاتجاه من اليسار الى اليمين في القراءة وحتى النص الخاص بقاعدة البيانات TDBEdit

فجميع الادوات من Tedit و TDBEdit الموجودة في الفورم سوف تتلقى هذا الامر وتقوم بالتحويل المذكور

For I := 0 to ComponentCount -1 do

If Components

[ضع هنا حرف I]

is TCustomEdit then

SendMessage((Components as TCustomEdit).Handle, EM_SETALIGN, ES_RIGHT + ES_RTL_READING, 0) ;

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…