سؤال

مع دلفي 7 محاولة تغيير لون شريط العنوان من البرنامج من موضوع النافذة. لقد رأيت رمز يسمح لك بتغيير جميع أشرطة العنوان لجميع البرامج، لكنني فقط أرغب في تغيير برنامجي.

أي شخص شوهد / فعل أي شيء مثل هذا؟ لا تمانع في دفع ثمن مكون إذا لزم الأمر.

هل كانت مفيدة؟

المحلول

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

هذا يبدو وكأنه مثال جيد: http://delphi.about.com/od/adptips2006/sht/draw_captionbar.htm.

نصائح أخرى

إن إجابة Stijn غير كاملة تماما، حيث سيتم إعادة تصنيف التسمية التوضيحية والحدود من النافذة عندما يتم تنشيطه (DE-). لذلك بالإضافة إلى WM_NCPAINT سوف تحتاج أيضا إلى التعامل معها WM_NCACTIVATE. وبعد لسوء الحظ، لا يمكن استبدال هذا ببساطة، حيث يوجد رمز آخر في معالج الرسائل الافتراضي (بصرف النظر عن رمز الرسم) الذي يحتاج إلى تنفيذه. لكن استدعاء المعالج الافتراضي سوف يؤدي بدوره إلى التسمية التوضيحية والنظام الافتراضي الذي يتم رسمه أولا، والذي ستحتاج إليه بعد ذلك مع اللون المقصود، مما يؤدي إلى وميض.

طريقة واحدة للتغلب على هذا هو ضبط منطقة الرسم التي يتم استدعاء معالج الرسائل الافتراضي. يرى "رسم العنوان على XP مع السمات" للحصول على مثال باستخدام مكالمات Windows API التي يجب أن تترجم بسهولة إلى Delphi. لاحظ أن هذا يتعامل فقط مع النص في شريط التسمية التوضيحية، ولكن ينطبق المبدأ.

قد نلقي نظرة على مكتبة نحل. Expressskin. بواسطة devexpress هو فكرة جيدة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top