grande immagine del pulsante di TRibbon non è centrata ... tutte le idee? facile dimostrare in fase di progettazione

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

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:

  1. entrare in azione l'editor e selezionare l'azione
  2. 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:

  1. incollare questi componenti in un modulo vuoto
  2. aggiungere un'immagine 32x32 all'elenco delle immagini
  3. impostare l'ImageIndex Action1 a 0

vedrete subito cosa intendo!

glifo non è centrato!
(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
È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top