مقدمة

هذه المقالة تتكلم عن نوع جديد من الأزرار كان مستخدماً في برنامج الأمين ولكن كان يتم معالجته يدوياً، وهو الزر مع قائمة منسدلة مشابه لزر (تعيين للجميع) في نافذة إدارة المستخدمين.

الطريقة القديمة

كان يتم معالجة كبسة الزر، ليتم إظهار قائمة في مكان يتم حسابه يدوياً في كل مرة، مع وضع رمز للزر هو السهم النازل مما يفقدنا إمكانية وضع رمز مخصص للزر يدل على العملية بشكل أوضح، وأحياناً كان لا يتم وضع هذا الرمز مما يفقد المستخدم إمكانية معرفة أن هذا الزر يحوي قائمة منسدلة للوهلة الأولى.

الطريقة الجديدة

في الطريقة الجديدة على المبرمج أولاً أن يغير Style الزر في الموارد Resources بحيث يضيف للنمط (Style) القيمة 0x40، مثلاُ إذا كان نمط الزر 0x50010000 يجب أن يصبح 0x50010040، بمجرد تغيير النمط سوف يتوقف البرنامج عن إرسال الرسالة WM_COMMAND برقم الزر عند الضغط عليه إلى النافذة الأب، وسوف يتم بدلاً عن ذلك إرسال رسالة WM_GETBTNMENU على النافذة الأب أن تعالجها.

الرسالة WM_GETBTNMENU

في هذه الرسالة سوف يتم استقبال ID الزر الذي أرسل الرسالة في المحدد WPARAM، أما المحدد LPARAM فهو حالياً صفر وغير مستخدم.

في تابع معالجة هذه الرسالة يجب أن يتم بناء قائمة منسدلة HMENU يتم وضع العناصر التي تريدها فيها، ثم مناداة التابع:

Copy
1         if( m_BmpMenu)
2             m_BmpMenu->RemapMenu( p, true);

لتبدو القائمة بنفس شكل قوائم الأمين. ثم يتم رد هذه القائمة كقيمة راجعة للتابع.

لا تقوم بحذف هذه القائمة لأنه سيتم حذفها ضمن عملية المعالجة في الزر بعد الإنتهاء من تلك القائمة، كما سيتم إعطائها المحاذاة المناسبة RTL أو LTR حسب واجهة البرنامج، وسوف تظهر في الموضع المناسب أسفل الزر.

أما عملية معالجة أوامر القائمة المنسدلة، فإن أوامرها سوف تصل بشكل مناسب إلى النافذة التي تحوي الزر، كما كان الأمر في الطريقة القديمة.

وهذه لائحة بالأزرار التي تتضمن قوائم منسدلة، (كما أرسلتها الآنسة لينة) يرجى من السادة المبرمجين تحويل للطريقة الجديدة كمرحلة أولى ، ثم استخدام إما رموز مناسبة للزر بدلاً من السهم القديم أو إزالة السهم القديم من الزر نهائياً:

القائمة سندات

1-        نافذة إيصال ورقة مالية تتضمن أزرار “عمليات” و”سندات”.

2-        نافذة تحصيل الأوراق المالية تتضمن زر “عمليات”.

القائمة تصنيع

3-        نافذة عملية التصنيع تتضمن زر “فاتورة إخراج” وهي تعرض فاتورتين في حال معالجة المواد نصف المصنّعة.

القائمة حوالات

4-        نافذة إيصال حوالة صادرة وإيصال حوالة واردة تتضمن أزرار “عمليات” و”سندات” و”حوالات مرتبطة”.

5-        نافذة استعراض الحوالات تتضمن زر “عمليات”. (في القائمة: حوالات – تقارير)

القائمة مشافي

6-        نافذة إضبارة المريض تتضمن زر “عمليات”.

القائمة أصول

7-        نافذة مناقلة أصل تتضمن أزرار “فاتورة” و”سند”.

القائمة فنادق

8-        نافذة إضبارة النزيل تتضمن زر “عمليات”.