Изменить цвет большинства элементов управления (например, TPanel) в приложении Firemonkey в Delphi (только для XE2 Update4 и XE3) - PullRequest
2 голосов
/ 09 марта 2012

ПРИМЕЧАНИЕ. Этот вопрос касается поведения в delphi XE2 update 4 и delphi XE3, а система стилей была изменена в XE4, поэтому этот вопрос не относится к Delphi версий XE4 и выше.

Многиеэлементы управления, такие как TPanel и т. д., не поддерживают простой способ изменить цвет любого элемента без перехода к функции «Стили».

Я думаю, что это должно работать:

  1. Создание формы.
  2. Помещение StyleBook в форму.
  3. Изменение или создание стиля.
  4. Применение стиля к элементу управления.
  5. Элемент управления меняет цвет.

Оставим в стороне тот факт, что что-то, что должно быть простым (как это было в VCL), теперь запутано в стилях.Каковы действительные рабочие шаги для Delphi XE2 (Firemonkey Update4), чтобы сделать TPanel синим вместо серого (его значения по умолчанию)?

Фактические результаты: Когда я пробую вышеупомянутое, я получаю остановку около 30секунд, использование памяти превышает 1 ГБ памяти для bds.exe, а затем происходит сбой. Иногда я получаю сообщение «AQReporter.dll необходимо закрыть», а иногда и другие ошибки из других плагинов IDE, наконец, «Embarcadero RAD Studio для Windows».перестал работать "ошибка.

Ответы [ 2 ]

3 голосов
/ 10 марта 2012

Оказывается, что среди других ошибок иногда свойство TForm.StyleBook не назначается автоматически.Если вы уверены, что он назначен, то вышеуказанные шаги сработают.

Быстрые шаги:

  1. Создание формы.
  2. Перетащите книгу стилей на форму и назначьте форму.StyleBook = StyleBook1
  3. Щелкните правой кнопкой мыши элемент управления, для которого вы хотите изменить стиль, выберите «Редактировать пользовательский стиль».
  4. Перейдите в инспектор объектов и измените свойство «Заливка», например, для изменения цвета фона панели.
  5. Применить и закрыть.(Возможно, придется щелкнуть два, три или четыре раза из-за ошибок фокусировки окна)

enter image description here

Примечание. Этот обходной путь бесполезен в Delphi XE4 и выше в качестве функции«Пользовательская настройка стиля» удалена из мобильного приложения FMX.

1 голос
/ 25 сентября 2017

Исходя из ответа Уоррена, для версий Delphi, более новых, чем те, которые он использовал, XE4 и выше, чтобы изменить стиль панели во время выполнения, необходимо изменить стиль в книге стилей, а затем переназначить стильна панель.В частности:

var
  R: TFMXObject;
begin
  R := StyleBook1.Style.FindStyleResource('Panel1Style1');
  if R is TRectangle then
    TRectangle(R).Fill.Color := claRed;

  Panel1.StyleLookup := 'Panel1Style1';
end;

Важно помнить, что для этого необходимо создать собственный стиль в книге стилей (согласно ответу Уоррена).В этом примере он называется «Panel1Style1», но вы можете заменить это имя на что-то совершенно другое.

...