2012-03-04 4 views
0

У меня есть TActionManager в моей форме.Изменение стиля TActionManager во время выполнения?

Я хотел бы от кода во время выполнения быть в состоянии изменить стиль диспетчера действий между «Платформа по умолчанию» «и XP Style» и т.д.

При попытке какой-либо из ниже:

ActionManager1.Style := 'Platform Default'; 
ActionManager1.Style := 'XP Style'; 

я получаю следующее сообщение об ошибке:

Left side cannot be assigned to

Я могу только предположить, это свойство только для чтения сообщения об ошибке.

Есть ли обходной путь или что-то, что мне может не хватать, как изменить стиль Action Manager во время выполнения?

Спасибо.

ответ

4

Я немного смущен сообщением об ошибке, которое вы сообщаете. Это не сообщение об ошибке, которое производит ваш код. Сообщение об ошибке, на самом деле сообщается, для кода в вашем вопросе, является:

E2010 Incompatible types: 'TActionBarStyle' and 'string'

Оставляя это в стороне, правильный синтаксис для установки в стиле менеджера действий во время выполнения заключается в следующем:

ActionManager1.Style := PlatformDefault; 
ActionManager1.Style := XPStyle; 
ActionManager1.Style := StandardStyle; 

Примечания что свойство Style имеет тип TActionBarStyle. Существуют различные экземпляры TActionBarStyle потомков, определенных в VCL, по одному для зарегистрированного стиля.

Эти экземпляры - это все глобальные переменные, определенные в разделе интерфейса устройства, по одному экземпляру на экземпляр. Для того, чтобы получить доступ к этим объектам типа вам нужно будет use следующие блоки:

  • Vcl.PlatformDefaultStyleActnCtrls для PlatformDefault стиля.
  • Vcl.XPStyleActnCtrls для XPStyle стиль.
  • Vcl.StdStyleActnCtrls для StandardStyle стиль.

Вам нужно будет опустить префикс Vcl на старых версиях Delphi.

Дизайнер формы использует волшебство, чтобы стиль выглядел как строка в инспекторе объектов. Это было реализовано таким образом, чтобы вы могли зарегистрировать свои собственные стили.

+0

Интересно, что VCL. был, но я предполагаю, что это должен быть XE2, поскольку я использую XE. Не могу поверить, что я не думал, что попытаюсь назвать это так, как вы и RRUZ показали! Как вы сказали, я думаю, потому что я видел это в Object Inspector как «Default Platform», я предположил, что это строка. И теперь, когда вы упомянули об этом, я обратил более пристальное внимание на редактор кода - ActionManager1.Стиль от TActionBarStyle, опять же, как вы указали. Иногда я просто пропускаю совершенно очевидное, я все еще участвую! :) Я принял ваш ответ из-за дополнительных деталей и информации. –

+0

Да, 'Vcl.' - это новые префиксы пространства имен в XE2. Вы просто опускаете их для XE. Однако вы меня путали с сообщением об ошибке компилятора. Я уверен, что он не сказал, что ты сказал! ;-) –

4

Вы должны назначить TActionBarStyle потомком в свойстве Style.

Попробуйте это (XPStyle является глобальной переменной, объявленной в блоке XPStyleActnCtrls)

ActionManager1.Style:=XPStyle; 
Смежные вопросы