la imagen de botón grande de TRibbon no está centrado ... alguna idea? fácil de demostrar en tiempo de diseño
-
21-09-2019 - |
Pregunta
i estoy usando delphi 2009 (actualizaciones 1, 2, 3, 4). i estoy viendo algo muy peculiar. la imagen en el botón no está centrado en el botón cuando tengo un botón grande con un gran glifo! en lugar de estar centrado, la parte izquierda del glifo se inicia en el centro del botón.
idea es que cuando i:
- entrar en el editor de acción y seleccione la acción
- utilizar el cuadro combinado ImageIndex en el inspector de objetos, la lista está vacía (normalmente me gustaría ver las imágenes disponibles en la lista desplegable).
parece que hay una propiedad ancho de la imagen que he fallado para establecer una lista de imágenes o no está configurado correctamente. he esperado el glifo en un botón grande debe ser de 32x32.
intente lo siguiente:
- pegar estos componentes en una forma vacía
- agregar una imagen de 32x32 a la lista de imágenes
- establece la ImageIndex Action1 a 0
inmediatamente verá lo que quiero decir!
(fuente: xrw.bc.ca )
¿alguien puede decirme qué es lo que parece?
Me parece interesante que la aplicación de demostración de la cinta no muestra este problema. i siquiera intentado la misma imagen.
gracias!
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
Solución
el problema era que los TActionClients relacionados objeto (la encuentran en la vista Estructura) de alguna manera (por defecto?) Se SmallIcons = true ... dando lugar a la colocación incorrecta del glifo. cambiado en el inspector de objetos y funciona ahora.
Otros consejos
Yo solía tener este problema con Delphi 2009 también (parece haber desaparecido en 2010).
IIRC, pruebe a ajustarla a la gran lista de imágenes de referencia en el gestor de acción para nada, entonces de nuevo a la lista de imágenes de nuevo.
N @
He descubierto este problema de nuevo a mí mismo. Yo estaba añadiendo un grupo a una página TRibbon
en tiempo de ejecución (no tengo un marco plug-in haciendo el trabajo). Después de agregar el grupo, y la adición de un botón, se compensaron las imágenes. Pero solamente en XP.
pensar el problema tiene que ver con el ancho del glifo en algún momento es 0, que a su vez hace que FGlyphPos en TCustomActionControl a ser el centro del botón (para grandes botones), y el texto de ser colocado en la parte izquierda del botón (para pequeños botones). La anchura del grupo es también más pequeño de lo que debería ser debido a esto.
Una forma rápida y fácil de poner en los grupos en los que volver a alinear todo es añadir este código a la forma (en este caso he añadido al evento OnShow, pero se puede poner donde se quiere):
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;
Espero que esto ayude a alguien. :)