TRibbon die große Taste das Bild ist nicht zentriert ... irgendwelche Ideen? leicht zu Entwurfszeit zu demonstrieren

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

Frage

ich verwende delphi 2009 (Update 1, 2, 3, 4). Ich sehe ganz eigentümliche etwas. das Bild auf der Schaltfläche in die Schaltfläche nicht zentriert, wenn ich einen großen Knopf mit einem großen Glyphe haben! statt, die Glyphe der linke Teil beginnt in der Mitte des Knopfes zentriert ist.

ein Hinweis ist, dass, wenn ich:

  1. geht in das Action-Editor und wählen Sie die Aktion
  2. verwenden, um die Imageindex Combobox im Objektinspektor die Liste leer ist (normalerweise würde ich die verfügbaren Bilder in der Combobox sehen).

es scheint, als ob es eine Bildbreite Eigenschaft i Satz versagt haben oder eine Abbildungsliste nicht richtig konfiguriert. Ich habe die Glyphen auf einem großen Knopf erwartet sollte 32x32 sein.

Versuchen Sie Folgendes:

  1. fügen Sie diese Komponenten in eine leere Form
  2. fügen Sie ein 32x32 Bild auf der Bildliste
  3. setzen die Action1 Imageindex auf 0

Sie werden sofort sehen, was ich meine!


(Quelle: xrw.bc.ca )

Kann mir jemand sagen, warum es so aussieht?

ich es interessant finde, dass das Band Demo-Anwendung dieses Problem nicht zeigen. Ich habe sogar versucht das gleiche Bild.

Danke!

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
War es hilfreich?

Lösung

war das Problem, dass das damit verbundene TActionClients Objekt (in der Strukturansicht finden) irgendwie (standardmäßig?) Bekommt Small = true ... falsche Positionierung der Glyphe führt. es im Objektinspektor geändert und es funktioniert jetzt.

Andere Tipps

Ich habe dieses Problem mit Delphi 2009 zu haben, wie gut (scheint im Jahr 2010 verschwunden).

IIRC, versucht, die große Bildliste Referenz im Aktionsmanager nichts einstellen, dann wieder zurück in die Bilderliste.

N @

entdeckte ich dieses Problem wieder selbst. Ich war eine Gruppe zu einer TRibbon Seite zur Laufzeit hinzugefügt (Ich habe einen Plugin-Framework macht die Arbeit). Nachdem die Gruppe hinzufügen, und das Hinzufügen einer Schaltfläche, wurden die Bilder versetzt. Aber nur auf XP.

I denkt das Problem hat mit der Glyphe Breite an einem gewissen Punkt zu tun 0 ist, die dann FGlyphPos in TCustomActionControl macht die Mitte der Taste sein (für große Tasten), und der Text ganz am linken Seite der Taste (für kleine Tasten) positioniert werden. Die Breite der Gruppe ist auch kleiner, als es aus diesem Grunde sein sollte.

Eine schnelle und einfache Möglichkeit, die Gruppen um Neuorientierungs alles zu treten ist diesen Code in das Formular hinzufügen (hier habe ich es das OnShow Ereignis hinzugefügt, aber Sie können es ausdrückte, wo Sie mögen):

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;

Hope dies hilft jemand. :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top