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 :

tfloatanimation destroy ou free


Sujet :

Composants FMX Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 226
    Par défaut tfloatanimation destroy ou free
    bonjour
    je viens de creer un Tfloatanimation
    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
     
     for nb:=1 to 7 do begin
     
       cre_boule(nb);
     
         anAnimation[nb]:=TFloatAnimation.Create(form1) ;
     
       anAnimation[nb].Parent:=uneBoule[nb];
       anAnimation[nb].PropertyName:='Position.X';
       anAnimation[nb].Duration:=8-nb;
       anAnimation[nb].StartFromCurrent:=True;
       anAnimation[nb].StopValue:=0+po;
       anAnimation[nb].StartValue:=200;
       anAnimation[nb].Delay:=nb;
       anAnimation[nb].Start;
     
        po:=po+50;
       end;
    mais je voudrais savoir si on doit les detruire apres usage
    avec free ou destroy moi quand j'essai de detruire on me dit pas de pointeur

  2. #2
    Membre émérite Avatar de sergio_is_back
    Homme Profil pro
    Consultant informatique industrielle, développeur tout-terrain
    Inscrit en
    Juin 2004
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant informatique industrielle, développeur tout-terrain
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 191
    Par défaut
    Citation Envoyé par tintin62 Voir le message
    bonjour
    je viens de creer un Tfloatanimation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    ....
         anAnimation[nb]:=TFloatAnimation.Create(form1) ;
    
    ....
    mais je voudrais savoir si on doit les detruire apres usage
    avec free ou destroy moi quand j'essai de detruire on me dit pas de pointeur
    C'est normal, en créant l'instance avec form1 comme propriétaire, ça va faire en sorte que c'est le designer qui libèrera l'instance à la fermeture de form1. Dans ce cas tu n'as pas besoin de les libérer toi même
    Si tu veux libérer les instances toi même, il faut créer l'instance sans propriétaire, comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    ....
         anAnimation[nb]:=TFloatAnimation.Create(nil) ;
    
    ....
    Et après il faut utiliser Free sur chaque instance pour la supprimer !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 226
    Par défaut
    bonjour
    même si je fais plusieurs fois appelle a tfloatanimation
    car a la fin de l'animation je reclique sur le button qui recré
    les memes tfloatanimation
    merci

  4. #4
    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
    Par défaut
    A noter que les animations ne se désactivent pas d'elles-mêmes en fin d'animation, donc si vous les utilisez plusieurs fois, selon que vous passez par Start/Stop ou Enabled, le comportement ne sera pas le même.

  5. #5
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par tintin62 Voir le message
    bonjour
    même si je fais plusieurs fois appelle a tfloatanimation
    car a la fin de l'animation je reclique sur le button qui recré
    les memes tfloatanimation
    merci
    la question n'est pas très claire...

    donc quand on crée un composant en lui attribuant un Owner, ou un Parent pour un composant visuel, il est détruit automatiquement si le Owner ou le Parent est détruit.

    dans tous les autres cas il faut libérer soit-même les objets qu'on crée.

    à quoi te sert le tableau anAnimation[] ?

    j'aurais bien vu un code comme ça

    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
     
    or nb:=1 to 7 do begin
     
       cre_boule(nb);
     
        var anAnimation :=TFloatAnimation.Create(uneBoule[nb]) ; // l'animation appartient à la boule
     
       anAnimation.Parent:=uneBoule[nb];
       anAnimation.PropertyName:='Position.X';
       anAnimation.Duration:=8-nb;
       anAnimation.StartFromCurrent:=True;
       anAnimation.StopValue:=0+po;
       anAnimation.StartValue:=200;
       anAnimation.Delay:=nb;
       anAnimation.Start;
     
        po:=po+50;
       end;
    du coup ça règle la question de l'animation...mais pas celui des boules

    est-ce que les boules sont détruites ? sont-elles réutilisées ?

    si elles sont détruites, les animations suivront
    si elles sont réutilisées, il ne faut créer l'animation qu'une fois lors de la création de la boule et la réutiliser également
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 226
    Par défaut
    bonjour
    oui je détruit les boules
    se son des Tcircle et Ttext détruit par free

    donc tfloatanimation est détruit aussi ?
    merci

  7. #7
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    oui, je viens de vérifier, sous FMX c'est particulier car la propriété Parent est au niveau de TFmxObject, sous VCL ce n'est qu'au niveau de TControl

    dans TFmxObject.Destroy tu as un appel à DeleteChildren qui détruit tous les objets enfants...c'est donc valable pour un FloatAnimation
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. Réponses: 16
    Dernier message: 27/05/2017, 10h14
  2. Procedure Free vs. Destructor Destroy
    Par MiJack dans le forum Langage
    Réponses: 5
    Dernier message: 02/10/2013, 13h21
  3. Réponses: 7
    Dernier message: 02/04/2010, 13h32
  4. Free & destroy : différence?
    Par nostroyo dans le forum Langage
    Réponses: 3
    Dernier message: 10/07/2008, 10h38
  5. Différence entre Free et Destroy
    Par bubulemaster dans le forum Delphi
    Réponses: 16
    Dernier message: 30/05/2007, 17h39

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