grande immagine del pulsante di TRibbon non è centrata ... tutte le idee? facile dimostrare in fase di progettazione
-
21-09-2019 - |
Domanda
sto usando Delphi 2009 (aggiornamenti 1, 2, 3, 4). sto vedendo qualcosa di molto particolare. l'immagine sul pulsante non è al centro del pulsante quando ho un grande pulsante con una grande glifo! piuttosto che essere centrata, la parte sinistra del glifo inizia al centro del bottone.
un indizio è che quando i:
- entrare in azione l'editor e selezionare l'azione
- utilizzare la casella combinata ImageIndex nella finestra di ispezione oggetto, l'elenco è vuoto (normalmente mi piacerebbe vedere le immagini disponibili nella casella combinata).
sembra che ci sia una larghezza proprietà immagine che ho fallito per impostare o un ImageList non configurato correttamente. ho aspettato il glifo su un pulsante di grandi dimensioni dovrebbe essere 32x32.
provare quanto segue:
- incollare questi componenti in un modulo vuoto
- aggiungere un'immagine 32x32 all'elenco delle immagini
- impostare l'ImageIndex Action1 a 0
vedrete subito cosa intendo!
(fonte: xrw.bc.ca )
qualcuno può dirmi il motivo per cui sembra che modo?
Trovo interessante che l'applicazione del nastro demo non mostra questo problema. ho anche provato la stessa immagine.
grazie!
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
Soluzione
il problema era che i TActionClients relativo oggetto (lo trovano nella vista Structure) in qualche modo (per impostazione predefinita?) Ottiene SmallIcons = true ... che porta al non corretto posizionamento del glifo. cambiato nella finestra di ispezione oggetto e ora funziona.
Altri suggerimenti
Ho usato per avere questo problema con Delphi 2009, nonché (sembra essere scomparsa nel 2010).
IIRC, prova a porre la grande riferimento di lista immagine nell'azione manager per nulla, poi di nuovo l'elenco delle immagini di nuovo.
N @
ho scoperto di nuovo questo problema io stesso. Stavo aggiungendo un gruppo per una pagina TRibbon
in fase di esecuzione (ho un quadro plugin di fare il lavoro). Dopo aver aggiunto il gruppo, e l'aggiunta di un pulsante, le immagini sono state compensate. Ma solo su XP.
I pensare il problema ha a che fare con la larghezza glifo a un certo punto è 0, che poi fa FGlyphPos in TCustomActionControl di essere il centro del pulsante (per i grandi pulsanti), e il testo da essere posizionati alla stessa sinistra del tasto (per piccoli pulsanti). La larghezza del gruppo è anche più piccolo di quanto dovrebbe essere a causa di questo.
Un modo semplice e veloce a calci i gruppi di ri-allineando tutto è quello di aggiungere questo codice al form (qui ho aggiunto alla manifestazione OnShow, ma si può mettere dove si vuole):
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;
Spero che questo aiuti qualcuno. :)