بسم الله الرحمن الرحيم
هذه مقالة أوضح فيها بإذن الله كيف يمكنك أن تنشيء نموذج (Form) به خاصية Mirrored أو المرآة
وخاصية Mirror تختلف عن خاصية RightToLeft فالأولى تقوم بعكس اتجاه النموذج كلياً حتى أزرار التحكم الموجودة أعلى النافذة مثل زر إغلاق Control Box ، بالطبع أعلم أن أكثرنا يفهم عملية المرآة هذه ولكنني سأوضح أسلوب بسيط يجعل من عملية التحويل هذه تحت السيطرة تماماً من قبل المبرمج .
1 - قم بانشاء مشروع جديد وأضف إليه نموذج Form جديد .
2 - قم بإضافة أداة زر Button وأداة عنوان Label جديدين .
3 – قم بتغيير خاصية Text في هذه الأدوات وضع نصوص عربية .
الآن نأتي للنموذج نفسه قم بفتح نافذة كود النموذج وسأفترض أن اسمه Form1
سنقوم بتعريف بعض المتغيرات والثوابت في بداية كلاس Class النموذج Form
هذه هي ( ثابتان ومتغير واحد) :
' هذا الثابت وظيفته إعطاء النموذج خاصية المرآه Const WS_EX_LAYOUTRTL = &H400000 'أما هذا فوظيفته هي منع تمرير هذه الخاصية إلى الأدوات الموجودة على ذلك النموذج Const WS_EX_NOINHERITLAYOUT = &H100000 'متغير وظيفته تخزين قيمة الخاصية للرجوع إليها عند احتياجها Private _mirrored As Boolean = False
ما هي الخطوة التالية ؟
نقوم بإنشاء خاصية المرآة Mirror
Public Property IsMirrored() As Boolean Get Return _mirrored End Get Set(ByVal Value As Boolean) If _mirrored <> Value Then _mirrored = Value MyBase.OnRightToLeftChanged(EventArgs.Empty) End If End Se End Property
انتظر لم ننته بعد .... بقي الجزء المسئول عن تنفيذ العملية نفسها
Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams Get Dim CP As System.Windows.Forms.CreateParams = MyBase.CreateParams() If IsMirrored Then CP.ExStyle = CP.ExStyle Or WS_EX_LAYOUTRTL ' Or WS_EX_NOINHERITLAYOUT ' لو أضفنا هذا لن ينتقل الميرور للأدوات End If Return CP End Get End Property
الآن بقيت خطوة واحدة غاية في الأهمية وهي الأدوات التي وضعناها على النموذج هل نسيتها ؟
يجب ومهم ولابد وضروري أن تجعل خاصية FlatStyle لهذه الأدوات هي System لأنه بدون ذلك ستظهر لك الكلمات معكوسة عكساً تاماً أي ستجد مثلا كلمة "إضافة" ستجدها "ةفاضإ" لذلك لا تنس تغيير هذه الخاصية للأدوات .
الآن أصبحت جاهزا لتشغيل الخاصية الجديدة في النموذج المعدل
فقط وببساطة ضع هذا الكود عند تحميل الفورم مثلاً أو في أي مكان آخر
Me.IsMirrored = True
وإذا أردت إلغائه اكتب هذا الكود
Me.IsMirrored = False
كلمة أخيرة حتى تصل هذه الخاصية لما تراه الآن أخذت وقتاً بالتأكيد لذا فقط أرجو عند نقلها ذكر المصدر وجزاكم الله خيراً ونفعكم بها .
محمد النحراوي
