Использование стилей
Альтернативой созданию другого стиля и переключением на этот новый стиль может быть создание собственного стиля для кнопки и изменение цвета в этом стиле во время выполнения.
- Щелкните правой кнопкой мыши по кнопке и выберите «Редактировать собственный стиль ...» из главного меню.
- Нажмите «Применить и закрыть» в редакторе стилей.
Вы только что создали собственный стиль для кнопки. Поэтому, когда вы редактируете его во время выполнения, это повлияет только на эту кнопку.
Теперь введите следующее в событие OnClick, чтобы изменить цвет во время выполнения:
var
r: TRectangle;
begin
// Find the background TRectangle style element for the button
r := (Button1.FindStyleResource('background') as TRectangle);
if Assigned(r) then
begin
r.Fill.Color := claBlue;
end;
end;
Примечание. Добавьте FMX.Objects к предложению использования, если у вас его еще нет. Вот где TRectangle.
Но подождите ...
Вы заметите, что цвет кнопки возвращается к значению по умолчанию, когда мышь покидает или входит в кнопку. Это из-за анимации. Если вы установили свойства стилевого имени для обоих элементов стиля TColorAnimation в редакторе стилей для пользовательского стиля, вы также можете установить цвет для них. Для моего примера я назвал TCOLORAnimations coloranimation1 и coloranimation2.
Вот пересмотренный код:
var
r: TRectangle;
ca: TColorAnimation;
begin
// Find the background TRectangle style element for the button
r := (Button1.FindStyleResource('background') as TRectangle);
if Assigned(r) then
begin
r.Fill.Color := claBlue;
end;
ca := (Button1.FindStyleResource('coloranimation1') as TColorAnimation);
if Assigned(ca) then
begin
ca.StartValue := claBlue;
end;
ca := (Button1.FindStyleResource('coloranimation2') as TColorAnimation);
if Assigned(ca) then
begin
ca.StopValue := claBlue;
end;
Примечание. Добавьте FMX.Ani к предложению использования для TColorAnimation.