صورة الزر الكبير في Tribbon غير متمركزة ... أي أفكار؟ سهل التظاهر في وقت التصميم
-
21-09-2019 - |
سؤال
أنا أستخدم Delphi 2009 (التحديثات 1 ، 2 ، 3 ، 4). أرى شيئًا غريبًا تمامًا. لا يتم توسيط الصورة الموجودة على الزر في الزر عندما يكون لدي زر كبير به حرفي كبير! بدلاً من التركيز ، يبدأ الجزء الأيسر من الحروف الرسومية في وسط الزر.
أدنى فكرة عن ذلك عندما أنا:
- انتقل إلى محرر الإجراء وحدد الإجراء
- استخدم ImageIndex combobox في مفتش الكائن ، القائمة فارغة (عادةً ما أرى الصور المتاحة في Combobox).
يبدو كما لو أن هناك خاصية عرض صورة فشلت في تعيينها أو لم يتم تكوينها بشكل صحيح. لقد توقعت أن تكون الرسوم الرمزية على زر كبير 32 × 32.
حاول القيام بما يلي:
- الصق هذه المكونات في شكل فارغ
- إضافة صورة 32x32 إلى قائمة الصور
- اضبط Action1 ImageIndex على 0
سترى على الفور ما أعنيه!
(مصدر: xrw.bc.ca)
هل يمكن لأي شخص أن يخبرني لماذا يبدو بهذه الطريقة؟
أجد أنه من المثير للاهتمام أن تطبيق الشريط التجريبي لا يظهر هذه المشكلة. حتى أنني حاولت نفس الصورة.
شكرا!
object ActionManager1: TActionManager
ActionBars = <
item
Items = <
item
Action = Action1
Caption = '&Action1'
ImageIndex = 0
CommandProperties.ButtonSize = bsLarge
end>
ActionBar = RibbonGroup1
end>
LargeDisabledImages = img3232
LargeImages = img3232
Left = 376
Top = 184
StyleName = 'Ribbon - Luna'
object Action1: TAction
Caption = 'Action1'
ImageIndex = 0
end
end
object Ribbon1: TRibbon
Left = 0
Top = 0
Width = 693
Height = 147
ActionManager = ActionManager1
Caption = 'Ribbon1'
Tabs = <
item
Caption = 'RibbonPage1'
Page = RibbonPage1
end>
ExplicitLeft = 232
ExplicitTop = 80
ExplicitWidth = 0
DesignSize = (
693
147)
StyleName = 'Ribbon - Luna'
object RibbonPage1: TRibbonPage
Left = 0
Top = 54
Width = 692
Height = 93
Caption = 'RibbonPage1'
Index = 0
object RibbonGroup1: TRibbonGroup
Left = 4
Top = 3
Width = 54
Height = 86
ActionManager = ActionManager1
Caption = 'RibbonGroup1'
GroupIndex = 0
end
end
end
object img3232: TImageList
Height = 32
Width = 32
Left = 376
Top = 256
end
المحلول
كانت المشكلة هي أن كائن TactionClients ذي الصلة (ابحث عنه في طريقة عرض الهيكل) بطريقة ما (افتراضيًا؟) يحصل على SmallIcons = صحيح ... مما يؤدي إلى تحديد موقع غير صحيح للرسوم الرسومية. غيره في مفتش الكائن ويعمل الآن.
نصائح أخرى
اعتدت أن أواجه هذه المشكلة مع Delphi 2009 أيضًا (يبدو أنه اختفى في عام 2010).
IIRC ، حاول تعيين مرجع قائمة الصور الكبيرة في مدير الإجراء إلى لا شيء ، ثم العودة إلى قائمة الصور مرة أخرى.
ن@
اكتشفت هذه المشكلة مرة أخرى بنفسي. كنت أضيف مجموعة إلى TRibbon
صفحة في وقت التشغيل (لدي إطار عمل مكون الإضافي يقوم بالعمل). بعد إضافة المجموعة ، وإضافة زر ، تم تعويض الصور. لكن فقط على XP.
أنا فكر في تتعلق المشكلة بعرض Glyph في مرحلة ما هو 0 ، مما يجعل fglyphpos في tcustomActionControl هو مركز الزر (للأزرار الكبيرة) ، والنص المراد وضعه على يسار الزر (للصغيرة أزرار). عرض المجموعة أصغر أيضًا مما ينبغي أن يكون بسبب هذا.
هناك طريقة سريعة وسهلة لركل المجموعات لإعادة توحيد كل شيء هي إضافة هذا الرمز إلى النموذج (هنا قمت بإضافته إلى حدث Onshow ، ولكن يمكنك وضعه في المكان الذي تريده):
for LTabIndex := 0 to Ribbon.Tabs.Count - 1 do
for LGroupIndex := 0 to Ribbon.Tabs[LTabIndex].Page.GroupCount - 1 do
Ribbon.Tabs[LTabIndex].Page.Groups[LGroupIndex].AlignGroupControls;
أمل أن هذا يساعد شخصاما. قون