2010-03-26 5 views
7

Ich bemerkte, dass die Höhe eines TToolButton erhöht, wenn Sie den Style der Schaltfläche auf tbsDropdown festlegen. Ich kann verstehen, dass die Breite zunimmt, so dass die Schaltfläche Platz zum Zeichnen des Abwärtspfeils bietet, aber ich bin nicht sicher, ob eine Erhöhung der Höhe erforderlich ist.TToolButton Höhe wächst mit Style = tbsDropdown

Schritte, das Problem (Delphi 2010, Windows 7 x64) zu reproduzieren:

  • hinzufügen TToolBar zu einem Formular, showCaptions = True
  • Rechtsklick hinzufügen, um eine Schaltfläche, um die Toolbar
  • Set-Taste Style = tbsDropDown und beachten Sie wächst auf den Button in der Höhe

die gleiche Höhe Anstieg geschieht, wenn es Bilder in der Symbolleiste zugeordnet sind, in diesem Fall gibt es ALR eady viel mehr vertikalen Platz zur Verfügung in der Schaltfläche, um das Dropdown zu zeichnen.

Hier ist ein visuelles Beispiel: alt text http://img440.imageshack.us/img440/1462/ttoolbar02.png alt text http://img291.imageshack.us/img291/966/ttoolbar01.png

Gibt es eine Abhilfe für dieses, ohne die VCL-Hacking, oder wird dies in der Windows-Systemsteuerung fest einprogrammiert?

Antwort

3

Es ist Teil der zugrunde liegenden Windows-Steuerung. Ein kurzer Blick in ComCtrls zeigt, dass das Ändern der TToolButton.Style es SetStyle Methode nennt. Wenn in SetStyle, ShowCaptions True ist, werden TToolBar.ButtonWidth und ButtonHeight beide auf 0 gesetzt und TToolButton.RecreateButtons wird aufgerufen.

RecreateButtons, ruft wiederum TToolBar.ResizeButtons, die einfach sendet (posts) eine Nachricht an den ToolBar

wird
Perform(TB_AUTOSIZE, 0, 0); 

TB_AUTOSIZE beabsichtigten Verwendung verwendet werden, gemäß MSDN,

nach Verursachung die Größe einer Symbolleiste, die entweder durch Festlegen der Schaltfläche oder der Bitmapgröße oder durch erstmaliges Hinzufügen von Zeichenfolgen geändert werden kann.

Seit SetStyle setzt sowohl die ButtonWidth und ButtonHeight-0 würde diese Nachricht scheint korrekt gesendet werden.

1

Sieht aus wie etwas mit der Theme-Unterstützung in zugrunde liegenden Windows-Steuerelement falsch ist. Schalten Sie die Runtime-Designs aus (Projekt/Optionen/Anwendung, deaktivieren Sie das Kontrollkästchen "Runtime-Designs aktivieren"), ignorieren Sie die erhöhten Schaltflächenhöhen zur Entwurfszeit (Delphi IDE verwendet Themen) und führen Sie die Anwendung aus - Sie sehen die normalen Höhen der Symbolleistenschaltflächen.

Verwandte Themen