la imagen de botón grande de TRibbon no está centrado ... alguna idea? fácil de demostrar en tiempo de diseño

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

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:

  1. entrar en el editor de acción y seleccione la acción
  2. 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:

  1. pegar estos componentes en una forma vacía
  2. agregar una imagen de 32x32 a la lista de imágenes
  3. establece la ImageIndex Action1 a 0

inmediatamente verá lo que quiero decir!

glifo no está centrada!
(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
¿Fue útil?

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. :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top