Изображение большой кнопки TRibbon не по центру ... есть идеи?легко демонстрируется во время разработки
-
21-09-2019 - |
Вопрос
я использую delphi 2009 (обновления 1, 2, 3, 4).я вижу нечто совершенно необычное.изображение на кнопке не центрировано по кнопке, когда у меня есть большая кнопка с большим глифом!вместо того чтобы располагаться по центру, левая часть глифа начинается в центре кнопки.
подсказка заключается в том, что когда я:
- перейдите в редактор действий и выберите нужное действие
- используйте выпадающий список ImageIndex в инспекторе объектов, список пуст (обычно я бы видел доступные изображения в выпадающем списке).
похоже, что есть свойство ширины изображения, которое мне не удалось установить, или неправильно настроен imagelist.я ожидал, что глиф на большой кнопке должен быть размером 32x32.
попробуйте следующее:
- вставьте эти компоненты в пустую форму
- добавьте изображение размером 32x32 в список изображений
- установите для Action1 imageindex значение 0
вы сразу поймете, что я имею в виду!
(источник: xrw.bc.ca)
кто-нибудь может сказать мне, почему это так выглядит?
я нахожу интересным, что демонстрационное приложение ribbon не показывает этой проблемы.я даже попробовал тот же образ.
Спасибо!
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
Решение
проблема заключалась в том, что связанный объект TActionClients (найдите его в представлении структуры) каким-то образом (по умолчанию?) получает SmallIcons= true...что приводит к неправильному расположению глифа.изменил его в инспекторе объектов, и теперь он работает.
Другие советы
Раньше у меня тоже была эта проблема с Delphi 2009 (кажется, исчезла в 2010).
IIRC, попробуйте установить для ссылки на большой список изображений в диспетчере действий значение nothing, затем снова вернитесь к списку изображений.
N@
Я сам снова обнаружил эту проблему.Я добавлял группу в TRibbon
страница во время выполнения (у меня есть фреймворк плагина, выполняющий эту работу).После добавления группы и кнопки изображения были смещены.Но Только в XP.
Я подумай проблема связана с тем, что ширина глифа в какой-то момент равна 0, что затем делает FGlyphPos в TCustomActionControl центром кнопки (для больших кнопок), а текст должен располагаться в самом левом углу кнопки (для маленьких кнопок).Из-за этого ширина группы также меньше, чем должна быть.
Быстрый и простой способ настроить группы на повторное выравнивание - добавить этот код в форму (здесь я добавил его в событие OnShow, но вы можете разместить его там, где вам нравится).:
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;
Надеюсь, это кому-то поможет.:)