l'image grand bouton de TRibbon est décentré ... des idées? facile à démontrer au moment de la conception
-
21-09-2019 - |
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:
- aller dans l'éditeur d'action et sélectionnez l'action
- 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:
- coller ces composants dans une forme vide
- ajouter une image à la liste 32x32 d'images
- 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
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. :)