Высота TToolButton Растет со Стилем = tbsDropdown

Я заметил, что высота TToolButton увеличивается при установке Стиля кнопки на tbsDropdown. Я могу понять увеличение ширины, таким образом, кнопка имеет пространство для рисования стрелки вниз, но я не уверен, что увеличение высоты необходимо.

Шаги для репродуцирования проблемы (Delphi 2010, Windows 7 x64):

  • Добавьте TToolbar к форме, ShowCaptions=True
  • Щелкните правой кнопкой для добавления кнопки к Панели инструментов
  • Кнопка Style=tbsDropDown набора и уведомление кнопка растут в высоте

То же увеличение высоты происходит, когда существуют изображения, присвоенные панели инструментов, в этом случае уже существует еще много вертикального пространства, доступного в кнопке для рисования выпадающего.

Вот визуальный пример: сопроводительный текст http://img440.imageshack.us/img440/1462/ttoolbar02.png сопроводительный текст http://img291.imageshack.us/img291/966/ttoolbar01.png

Существует ли обходное решение для этого, не взламывая VCL или этот hardcoded в управление Windows?

7
задан smartins 26 March 2010 в 09:13
поделиться

2 ответа

Это часть базового элемента управления Windows. Быстрый просмотр ComCtrls показывает, что изменение TToolButton.Style вызывает его метод SetStyle . Если в SetStyle , ShowCaptions имеет значение True, тогда TToolBar.ButtonWidth и ButtonHeight оба установлены в 0, а TToolButton .RecreateButtons вызывается.

RecreateButtons , в свою очередь, вызывает TToolBar.ResizeButtons , который просто отправляет (публикует) сообщение на ToolBar , используя

Perform(TB_AUTOSIZE, 0, 0);

TB_AUTOSIZE , предназначенный для в соответствии с MSDN ,

после изменения размера панели инструментов путем установки кнопки или размера растрового изображения или путем добавления строк в первый раз.

Поскольку SetStyle устанавливает для ButtonWidth и ButtonHeight значение 0, это сообщение будет отправлено правильно.

3
ответ дан 7 December 2019 в 12:18
поделиться

Похоже, что-то не так с поддержкой тем в базовом элементе управления окнами. Отключите темы времени выполнения (Project/Options/Application, снимите флажок "Enable runtime themes"), игнорируйте увеличенную высоту кнопок во время проектирования (Delphi IDE использует темы) и запустите приложение - вы увидите нормальную высоту кнопок панели инструментов.

2
ответ дан 7 December 2019 в 12:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: