2010-03-26 17 views
7

Ho notato che l'altezza di un TToolButton aumenta quando si imposta lo stile del pulsante su tbsDropdown. Posso capire che la larghezza aumenta, quindi il pulsante ha lo spazio per disegnare la freccia verso il basso, ma non sono sicuro che sia necessario un aumento di altezza.TToolButton Height si sviluppa con Style = tbsDropdown

Procedura per riprodurre il problema (Delphi 2010, Windows 7 x64):

  • Aggiungi TToolbar ad una forma, showCaptions = True
  • Tasto destro del mouse per aggiungere un pulsante alla barra degli strumenti
  • pulsante SET style = tbsDropDown e notare il pulsante cresce in altezza

lo stesso aumento dell'altezza avviene quando vi sono immagini assegnate alla barra , nel qual caso non è alr eady molto più spazio verticale disponibile nel pulsante per disegnare il menu a discesa. ci alt text http://img440.imageshack.us/img440/1462/ttoolbar02.png alt text http://img291.imageshack.us/img291/966/ttoolbar01.png

è una soluzione per questo, senza l'hacking della VCL, o questo è insita nel controllo di Windows:

Ecco un esempio visivo?

risposta

3

Fa parte del controllo Windows sottostante. Un rapido sguardo su ComCtrls mostra che la modifica di TToolButton.Style chiama il metodo SetStyle. Se, in SetStyle, ShowCaptions è impostato su True, TToolBar.ButtonWidth e ButtonHeight sono entrambi impostati su 0 e viene chiamato TToolButton.RecreateButtons.

RecreateButtons, a sua volta, chiamate TToolBar.ResizeButtons, che invia semplicemente (messaggi) un messaggio al ToolBar utilizzando

Perform(TB_AUTOSIZE, 0, 0); 

TB_AUTOSIZE è destinato ad essere utilizzato, secondo MSDN,

dopo aver causato la dimensione di una barra degli strumenti da modificare impostando il pulsante o la dimensione della bitmap o aggiungendo le stringhe per la prima volta.

Dal SetStyle set sia la ButtonWidth e ButtonHeight-0, questo messaggio sembrerebbero essere inviato correttamente.

1

Sembra che qualcosa non funzioni con il supporto del tema nel controllo di Windows sottostante. Disattiva i temi di runtime (Progetto/Opzioni/Applicazione, deseleziona la casella di controllo "Attiva temi di runtime"), ignora le altezze dei pulsanti aumentate in fase di progettazione (Delphi IDE utilizza i temi) ed esegui l'applicazione - vedrai le altezze normali dei pulsanti della barra degli strumenti.

Problemi correlati