IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants FMX Delphi Discussion :

Modifier le gradient d'un style (bouton)


Sujet :

Composants FMX Delphi

  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    12 265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 12 265
    Points : 32 829
    Points
    32 829
    Billets dans le blog
    37
    Par défaut Modifier le gradient d'un style (bouton)
    Bonjour,

    petit cas d'école pour confinés pouvant s'ennuyer.
    Pour un besoin particulier j'ai besoin d'un bouton en dégradé de vert ou de rouge.

    Le style d'un bouton "de base" utilise un background récupéré dans la ressource
    Nom : Capture.PNG
Affichages : 51
Taille : 2,9 Ko
    background n'étant pas très pratique (impossible de changer les couleurs), j'ai créé mon propre style
    Nom : Capture_1.PNG
Affichages : 53
Taille : 2,9 Ko
    en remplaçant le TButtonStyleObject initial par un TRectangle, et en le remplisssant avec un gradient et en nommant mon nouveau style GreenColorButton
    Vous constaterez que j'ai également créé un RedColorButton. C'est justement l'objet de ma question.

    Au départ je me suis dit qu'il devait être possible de changer les couleurs du gradient directement et n'utiliser qu'un seul style
    accéder au gradient ne pose pas de problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Button1.StylesData['backGround.fill.gradient']:=ungradient;
    je me suis donc dit je peux faire l'inverse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ungradient:=Button1.StylesData['backGround.fill.gradient']
    modifier les couleurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ungradient.fill.Gradient.Points[0]:=Talphacolors.red;
    ungradient.fill.Gradient.Points[2]:=Talphacolors.red;
    puis réaffecter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Button1.StylesData['backGround.fill.gradient']:=ungradient;
    Sauf que l'affectation en rouge le compilateur n'aime pas
    [dcc32 Erreur] UnitPaiements.pas(192): E2010 Types incompatibles : 'TGradient' et 'TValue'
    Il faut transformer le TValue Button1.StylesData['backGround.fill.gradient'] en TGradient et encore une fois les TValue et moi c'est pas encore gagné.

    Notez que j'aurais très bien pu me passer des styles et faire un pseudo bouton en posant un TRectangle et un enfant TText qui m'éviterait partie des tracas, mais bon, puisque style il y a, autant utiliser
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    12 265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 12 265
    Points : 32 829
    Points
    32 829
    Billets dans le blog
    37
    Par défaut
    Il m'a fallu attendre la clôture de la période de travail
    L'astuce, ne pas oublier le .Object pour transformer le TValue et caster l'ensemle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var ungradient : TGradient;
    begin
    ungradient:=TGradient(Button1.StylesData['backGround.fill.gradient'].Object);
    ungradient.fill.Gradient.Points[0]:=Talphacolors.red;
    //...
    ungradient.fill.Gradient.Points[2]:=Talphacolors.red;
    Button1.StylesData['backGround.fill.gradient']:=ungradient;
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Modifier la propriété click d'un bouton
    Par OliverD dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/08/2009, 20h00
  2. Style bouton personnalisé
    Par Poulain dans le forum ASP.NET
    Réponses: 8
    Dernier message: 16/04/2008, 17h50
  3. Réponses: 8
    Dernier message: 21/12/2006, 19h41
  4. Modifier une requête en fonction de boutons d'option
    Par JahRastafari dans le forum Access
    Réponses: 17
    Dernier message: 15/06/2005, 14h42
  5. Style bouton
    Par etranger dans le forum Composants VCL
    Réponses: 8
    Dernier message: 04/06/2005, 20h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo