صورة الزر الكبير في Tribbon غير متمركزة ... أي أفكار؟ سهل التظاهر في وقت التصميم

StackOverflow https://stackoverflow.com/questions/1767843

سؤال

أنا أستخدم Delphi 2009 (التحديثات 1 ، 2 ، 3 ، 4). أرى شيئًا غريبًا تمامًا. لا يتم توسيط الصورة الموجودة على الزر في الزر عندما يكون لدي زر كبير به حرفي كبير! بدلاً من التركيز ، يبدأ الجزء الأيسر من الحروف الرسومية في وسط الزر.

أدنى فكرة عن ذلك عندما أنا:

  1. انتقل إلى محرر الإجراء وحدد الإجراء
  2. استخدم ImageIndex combobox في مفتش الكائن ، القائمة فارغة (عادةً ما أرى الصور المتاحة في Combobox).

يبدو كما لو أن هناك خاصية عرض صورة فشلت في تعيينها أو لم يتم تكوينها بشكل صحيح. لقد توقعت أن تكون الرسوم الرمزية على زر كبير 32 × 32.

حاول القيام بما يلي:

  1. الصق هذه المكونات في شكل فارغ
  2. إضافة صورة 32x32 إلى قائمة الصور
  3. اضبط Action1 ImageIndex على 0

سترى على الفور ما أعنيه!

glyph is not centered!
(مصدر: 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;

أمل أن هذا يساعد شخصاما. قون

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