Bonjour,
Changer la couleur d'un bouton stylé, s'il s'agit d'un style vraiment FMX est assez facile puisque le fond (background) est un TRectangle.
Ce qui m'a toujours laissé sur ma faim est de pouvoir modifier ce même fond lorsque celui-ci est défini par un TButtonStyleObject.
Personellement, je déteste les styles à base d'image (beaucoup plus gros en taille, plus "restrictifs") cependant ils sont nettement plus "jolis" et légion.
De plus j'ai l'impression que le nouvel outil "FMX Style designer" proposé avec la version 13.1 (que je ne maitrise pas) reste très image.
Dans ce cas c'est une portion de l'image du style qui est utilisée, portion définie par une collection de "région" (TBitmapLinks).
Pas facile alors de colorier le boutontout en gardant si possible les animations définies.
Mon astuce ? Mettre le bouton dans un TRectangle et codifier l'évènement OnApplyStyleLookup du bouton
Petit inconvénient, au design vous remarquerez que la couleur censée être rouge vif est "voilée" (voile dû à un niveau de transparence)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 procedure TForm1.Button1ApplyStyleLookup(Sender: TObject); var bck : TFmxObject; begin bck:=Button1.FindStyleResource('background'); // on a affaire à un TButtonStyleObject if (bck is TButtonStyleObject) AND (not TButtonStyleObject(bck).NormalLink.IsEmpty) then begin TButtonStyleObject(bck).NormalLink.Clear; // désactive le fond normal TButtonStyleObject(bck).FocusedLink.Clear; // désactive le fond si focus end; end;
Bien sûr, le plus simple est d'utiliser simplement un TRectangle pour faire office de bouton.
Bien sûr, une solution, nettement plus compliquée, serait d'intégrer un rectangle rouge dans l'image (je devrai écrire les images puisque dépendant de la résolution) et de redéfinir les zones (TBounds).
Une autre solution,serait d'ajouter un TStyleBook contenant un élément nommé redbuttonstyle viable si :
- On veut pouvoir changer de style au run-time.
- On veut plusieurs boutons "rouges".
Enfin, dernière solution envisageable, créer le style du bouton au runtime, au détriment du WYSIWYG au moment du design.
A moins qu'il existe une autre solution ?







tout en gardant si possible les animations définies.

Répondre avec citation
Partager