A imagem de Button Large do Tribbon não está centrada ... alguma idéia? fácil de demonstrar no tempo de design

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

Pergunta

Estou usando o Delphi 2009 (atualizações 1, 2, 3, 4). Estou vendo algo bastante peculiar. A imagem no botão não está centrada no botão quando tenho um botão grande com um glifo grande! Em vez de se concentrar, a parte esquerda do glifo começa no centro do botão.

Uma pista é que quando eu:

  1. Entre no editor de ação e selecione a ação
  2. Use o ImageIndex ComboBox no inspetor de objeto, a lista está vazia (normalmente eu veria as imagens disponíveis no ComboBox).

Parece que existe uma propriedade de largura de imagem que eu não defini ou uma lista de imagenagem não configurada corretamente. Eu esperava que o glifo em um botão grande fosse 32x32.

Experimente o seguinte:

  1. Cole esses componentes em uma forma vazia
  2. Adicione uma imagem de 32x32 à lista de imagens
  3. Defina o Action1 ImageIndex como 0

Você verá imediatamente o que quero dizer!

glyph is not centered!
(fonte: xrw.bc.ca)

Alguém pode me dizer por que parece assim?

Acho interessante que o aplicativo Demo Ribbon não mostre esse problema. Eu até tentei a mesma imagem.

obrigada!

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
Foi útil?

Solução

O problema era que o objeto TactionClients relacionado (encontre -o na exibição da estrutura) de alguma forma (por padrão?) Obtém smallicons = true ... levando ao posicionamento incorreto do glifo. mudou no inspetor de objeto e funciona agora.

Outras dicas

Eu costumava ter esse problema com Delphi 2009 também (parece ter desaparecido em 2010).

IIRC, tente definir a referência da Lista de Imagens Grande no Gerenciador de Ação para nada e depois volte para a lista de imagens novamente.

N@

Eu descobri esse problema novamente. Eu estava adicionando um grupo a um TRibbon página no tempo de execução (eu tenho uma estrutura de plug -in fazendo o trabalho). Depois de adicionar o grupo e adicionar um botão, as imagens foram deslocadas. Mas em XP.

EU acho O problema tem a ver com a largura do glifo em algum momento de 0, o que faz com que os fglyphpos em tcustomactionControl sejam o centro do botão (para botões grandes), e o texto a ser posicionado à esquerda do botão (para pequenos botões). A largura do grupo também é menor do que deveria ser por causa disso.

Uma maneira rápida e fácil de iniciar os grupos para alinhar tudo é adicionar esse código ao formulário (aqui eu o adicionei ao evento Onshow, mas você pode colocá-lo onde quiser):

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 isso ajude alguém. :)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top