l'image grand bouton de TRibbon est décentré ... des idées? facile à démontrer au moment de la conception

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

Question

J'utilise delphi 2009 (mises à jour 1, 2, 3, 4). Je vois quelque chose d'assez particulier. l'image sur le bouton est centré sur le bouton lorsque j'ai un gros bouton avec un grand glyphe! plutôt que d'être centrée, la partie gauche du glyphe commence au centre du bouton.

un indice est que quand i:

  1. aller dans l'éditeur d'action et sélectionnez l'action
  2. utilisez le combobox ImageIndex dans l'inspecteur d'objets, la liste est vide (normalement je verrais les images disponibles dans la liste déroulante).

il semble que il y a une image propriété width j'ai échoué à définir ou un imagelist pas correctement configuré. J'ai attendu le glyphe sur un grand bouton doit être 32x32.

essayez ce qui suit:

  1. coller ces composants dans une forme vide
  2. ajouter une image à la liste 32x32 d'images
  3. définir la imageindex Action1 à 0

vous verrez immédiatement ce que je veux dire!


(source: xrw.bc.ca )

quelqu'un peut me dire pourquoi il semble de cette façon?

Je trouve intéressant que l'application de démonstration du ruban ne montre pas ce problème. J'ai même essayé la même image.

merci!

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
Était-ce utile?

La solution

le problème était que les TActionClients liées à l'objet (trouvent dans la vue Structure) en quelque sorte (par défaut?) Obtient SmallIcons = true ... conduisant à un mauvais positionnement du glyphe. changé dans l'inspecteur d'objets et il fonctionne maintenant.

Autres conseils

J'ai déjà eu ce problème avec Delphi 2009 et (semble avoir disparu en 2010).

IIRC, essayez de régler la grande référence de liste d'images dans le gestionnaire d'action à rien, puis revenir à la liste d'images à nouveau.

N @

J'ai découvert à nouveau ce problème moi-même. J'ajoutais un groupe à une page TRibbon lors de l'exécution (j'ai un cadre de plugin faire le travail). Après avoir ajouté le groupe, et en ajoutant un bouton, les images ont été compensées. Mais que sur XP.

penser le problème a à voir avec la largeur de glyphe à un moment donné être 0, ce qui rend alors FGlyphPos dans TCustomActionControl être le centre du bouton (pour les gros boutons), et le texte être placé à l'extrême gauche du bouton (pour les petits boutons). La largeur du groupe est également plus petit que ce devrait être à cause de cela.

Un moyen rapide et facile à lancer les groupes pour tout réoriente est ajouter ce code à la forme (ici, je l'ai ajouté à l'événement OnShow, mais vous pouvez le mettre où vous voulez):

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;

Espérons que cela aide quelqu'un. :)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top