A imagem de Button Large do Tribbon não está centrada ... alguma idéia? fácil de demonstrar no tempo de design
-
21-09-2019 - |
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:
- Entre no editor de ação e selecione a ação
- 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:
- Cole esses componentes em uma forma vazia
- Adicione uma imagem de 32x32 à lista de imagens
- Defina o Action1 ImageIndex como 0
Você verá imediatamente o que quero dizer!
(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
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 só 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. :)