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

C++Builder Discussion :

Un Sender peut-il s'auto-d�truire lors d'un onClick? [FAQ]


Sujet :

C++Builder

  1. #1
    Membre chevronn� Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par d�faut Un Sender peut-il s'auto-d�truire lors d'un onClick?
    Bonjour, j'ai fait un tableau de TImage allou� dynamiquement (new) qui appartiennent � un tableau de TPanel allou� de la m�me fa�on (dans le style acdsee).

    J'ai mis pour les TImages dans le onClick une fonction qui est sens� d�truire (delete) toutes les images du tableau ainsi que tous les panels.

    Or en fait, j'ai l'impression que je n'ai pas le droit de d�truire le Sender qui appelle ma fonction par le onClick. Je n'ai pas le droit de d�truire l'image sur laquelle j'ai cliqu� (ou � partir de laquelle j'ai appel� l'�venement onClick). Il en est de m�me pour le panel. Tous mes panels sont d�truits sauf celui auquel appartient l'image.

    Et j'ai droit � un gros message d'erreur.

    Ma question est: A-t-on le droit de d�truire le sender d'un �venement onClick par cet �v�nement ? Sinon comment contourn� le pb ? Comment d�truire l'image Sender par le onClick ?

    Merci. Flo.

  2. #2
    Membre Expert
    Avatar de Gilles Lou�se
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par d�faut
    Vous ne pouvez effectivement pas d�truire l'objet par le sender, c'est une erreur dite abstraite. Une m�thode de classe ne peut pas d�tuire la classe dont elle est m�thode, la destruction doit toujours s'op�rer � l'ext�rieur de la classe. C'est pourquoi, quand vous fermez une fen�tre cr��e dynamiquement, l'�v�nement OnClose se programme ainsi :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    void __fastcall TForm1::Close(TObject *Sender, TCloseAction &Action)
    {
    Action=caFree;
    }
    On lib�re ainsi la m�moire mais cela ne se passe pas dans la m�thode elle-m�me.

    Pour r�soudre votre probl�me vous pouvez mettre vos panels et images dans une fen�tre enfant, la fen�tre sera alors propri�taire de tous ces �lements et au moment du click pour tout d�truire, vous vous branchez au OnClose de la fen�tre enfant, ce qui aura pour effet de tout lib�rer car la fen�tre d�truira elle-m�me les composants dont elle est propri�taire.

    En g�n�ral, on ne d�truit pas les �l�ments pour cette raison � savoir que l'autodestruction est impossible mais on joue simplement sur leur visibilit�, on les efface simplement de l'�cran en les rendant invisibles mais ils restent en m�moire. Ils seront alors d�truits � la fin de l'application.

    � bient�t
    Gilles

  3. #3
    Membre chevronn� Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par d�faut
    Excellent, merci beaucoup, l'id�e est vraiment excellente. Je parle de la fenetre enfant : �a va vraiment resoudre mon probleme.

    Merci encore. Flo.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [MySQL] auto-incr�ment lors de la cr�ation d'une table
    Par _MattU_ dans le forum PHP & Base de donn�es
    R�ponses: 4
    Dernier message: 25/11/2008, 23h37
  2. R�ponses: 6
    Dernier message: 10/06/2008, 16h55
  3. R�ponses: 13
    Dernier message: 14/05/2008, 16h22
  4. Un contr�le visuel peut-il s'auto-d�truire
    Par jcs2 dans le forum Delphi
    R�ponses: 3
    Dernier message: 07/05/2007, 14h37
  5. [MySQL] Obtenir la valeur de l'auto-increment lors d'une insertion
    Par yazerty dans le forum PHP & Base de donn�es
    R�ponses: 5
    Dernier message: 08/01/2006, 15h18

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