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 :

[Rio][FMX]Comment activer/désactiver un compo dans stylebook en runtime?


Sujet :

Composants FMX Delphi

  1. #1
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    1 783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1 783
    Points : 5 727
    Points
    5 727
    Par défaut [Rio][FMX]Comment activer/désactiver un compo dans stylebook en runtime?
    Bonjour à tous,

    Je veux faire en sorte que lorsque l'utilisateur clique sur un bouton, le pourtour du bouton se colorise.

    Pour ce faire, j'ai défini un style comme suit:

    Nom : ButtonStyle.png
Affichages : 95
Taille : 14,9 Ko

    J'obtiens le comportement désiré mais j'ai un problème au démarrage de l'app: A l'ouverture, le pourtour du bouton est déjà colorisé et il faut cliquer une première fois sur le bouton pour pouvoir obtenir le comportement voulu.

    Nom : colorisedbouton.png
Affichages : 90
Taille : 3,5 Ko

    Comment puis-je éviter d'avoir ce pourtour coloré au démarrage alors qu'il n'y a pas encore eu de click sur le bouton?

    Est-il possible d'activer/désactiver le composant d'un stylebook en runtime? (l'idée étant de mettre le Gloweffect1Style.enabled à false dans le stylebook puis de la passer à True en runtime)

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Pour le fun, je vais vérifier mais déjà mes premières impressions
    Citation Envoyé par Anselme45 Voir le message
    Comment puis-je éviter d'avoir ce pourtour coloré au démarrage alors qu'il n'y a pas encore eu de click sur le bouton?
    Peut-être parce que le bouton est considéré comme pressé au démarrage de l'application, ce serait trop bête que la propriété ispressed soit à true
    vérification faite (aucun style changé), ce n'est pas le cas.

    Une fois le style créé (tel l'image), effectivement le bouton a l'effet mais c'est "normal" puisque (selon l'image) l'effet est enabled. (du coup le trigger ne sert à rien) il faut que dans le style l'effet soit désactivé tout simplement.

    Est-il possible d'activer/désactiver le composant d'un stylebook en runtime? (l'idée étant de mettre le Gloweffect1Style.enabled à false dans le stylebook puis de la passer à True en runtime)
    ça c'est la question intéressante, même si du coup elle devient "subsidiaire" , on doit pouvoir y accéder en recupérant background.GlowEffect1Style mais background est un StyleObject ce qui n'a jamais été mon type préféré.
    [EDIT : 8:51]
    Alors, oui, c'est possible.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    uses FMX.Effects, FMX.Styles;
     
    procedure TForm125.Button1Click(Sender: TObject);
    var FStyle,FFmxObj : TFMXObject;
    begin
    if (Sender is TButton) AND Sametext(TButton(Sender).StyleLookup,'button1style1') then
      begin
        FFMXObj:=TButton(Sender).FindStyleResource('GlowEffect1Style');
        if assigned(FFMXObj) Then
           begin
             TGlowEffect(FFMXObj).enabled:=false;
             TGlowEffect(FFMXObj).GlowColor:=Talphacolors.Red;
           end
        else showmessage('non affecté');   // ne doit pas arrivé
    //    TButton(Sender).ApplyStyleLookup;
      end;
    end;
    Reste que cela ne s'applique ici que sur le bouton concerné car il est redessiné (applystylelookup a été commenté car il y a redessin à cause du trigger) . S'il y a d'autres contrôles ,dans ce cas d'autres boutons, avec le même style, il ne sont pas affecté par le code
    Il faudrait trouver un moyen d'appliquer le "nouveau style" à tous mais, à part en naviguant dans la liste de tous les contrôles, je ne vois pas de solution.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    en fait il suffit de désactiver l'effet, il st censé se déclencher en fonction du trigger (et pense à mettre aussi le reverse trigger pour être tranquille)

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par pprem Voir le message
    (et pense à mettre aussi le reverse trigger pour être tranquille)
    eheh, il n'y a pas de reverse pour le gloweffect et même peut être pour la plupart des effets tu confonds avec les animations qui, elles, ont des InverseTrigger (majoritairement ?)

    pour en revenir à mes moutons,
    Reste que cela ne s'applique ici que sur le bouton concerné car il est redessiné (applystylelookup a été commenté car il y a redessin à cause du trigger) . S'il y a d'autres contrôles ,dans ce cas d'autres boutons, avec le même style, il ne sont pas affecté par le code
    en fait j'utilise le principe de modification du style pour un bouton (https://www.developpez.net/forums/bl...-grave-marbre/)
    J'avoue que je n'ai toujours pas réussi à modifier directement le stylebook.
    En fait je n'arrive pas à accéder aux éléments de celui-ci. Alors que si je fais une copie c'est possible

    voilà un "florilège" de mes essais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     aFmxObj : TFMXObject:= Stylebook1.Style  // inaccessible  
     FStyle: TStyleBook := TStyleBook.Create(self);
     FStyle:=StyleBook1;
     aFmxObj :=Fstyle.Style; // ok
     aFmxObj :=FStyle.Style.FindStyleResource('Button1Style1'); // OK
     aFmxObj :=aFMXObj.FindStyleResource('GlowingEffect1'); // OK
     aFmxObj :=FStyle.Style.FindStyleResource('Button1Style1.GlowinsEffect1'); // pas OK
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    1 783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1 783
    Points : 5 727
    Points
    5 727
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Une fois le style créé (tel l'image), effectivement le bouton a l'effet mais c'est "normal" puisque (selon l'image) l'effet est enabled. (du coup le trigger ne sert à rien) il faut que dans le style l'effet soit désactivé tout simplement
    Bien vu!

    Avec un enabled à False, j'ai le bon comportement!

    Utilisant pour la première fois cette notion d'effet avec trigger, je me suis piégé moi-même... Je me suis convaincu que le enabled rendait actif l'effet et allait activer le trigger alors qu'en réalité "enabled" et "trigger" interagissent sur la même valeur booléenne. J'ai honte

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    1 783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1 783
    Points : 5 727
    Points
    5 727
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    J'avoue que je n'ai toujours pas réussi à modifier directement le stylebook.
    En fait je n'arrive pas à accéder aux éléments de celui-ci. Alors que si je fais une copie c'est possible
    A l'usage, cette notion de "styles" applicables aux objets s'avère efficace à l'emploi mais il faut bien avouer que c'est pas facile à dominer le sujet

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

Discussions similaires

  1. Comment activer/désactiver les effets de flou de DWM? (FAQ)
    Par zubrow dans le forum Windows Vista
    Réponses: 3
    Dernier message: 01/12/2007, 22h15
  2. Réponses: 2
    Dernier message: 22/09/2007, 19h38
  3. Réponses: 17
    Dernier message: 08/06/2005, 14h52
  4. Réponses: 9
    Dernier message: 15/09/2004, 21h35

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