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

Langage Delphi Discussion :

Destruction d'objet (.free) >> EAccessViolation


Sujet :

Langage Delphi

  1. #1
    Membre régulier Avatar de monstroplante
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 107
    Points : 76
    Points
    76
    Par défaut Destruction d'objet (.free) >> EAccessViolation
    Bonjour,

    Je crée des boutton dynamiquement mais je veux qu'on puisse les supprimer en fesant un click droit dessus.

    J'ai donc ecris ce code :
    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
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    with TJvNavPanelButton.Create(Self) do
        begin
          Parent := Panel1;
          Align := alTop;
          oncontextpopup:=JvNavPanelButton1ContextPopup;
        end;
    end;
     
    procedure TForm1.JvNavPanelButton1ContextPopup(Sender: TObject;
      MousePos: TPoint; var Handled: Boolean);
    begin
    sender.Free;
    end;
    Quand je supprime un boutton (click droit) j'obtiens un "EAccessViolation".
    Ce bug n'est pas systematique, par moments ca fonctionne.
    Si je crée un boutton de facon fixe (avant l'execution pas en dynamique), je n'ai aucun probleme...

  2. #2
    Membre régulier Avatar de monstroplante
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 107
    Points : 76
    Points
    76
    Par défaut
    UP

  3. #3
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Je ne suis pas sur que ton 'Sender' soit le TJvNavPanelButton précédemment créé.
    DEJA

    ENSUITE
    Ca plante surement car, tu tentes de libérer un object, dans lequel une méthode lui appartenant est en cours d'exécution...
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  4. #4
    Membre régulier Avatar de monstroplante
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 107
    Points : 76
    Points
    76
    Par défaut
    Je ne suis pas sur que ton 'Sender' soit le TJvNavPanelButton précédemment créé.
    Si j'ecris ce code dans la procedure associé au "oncontextpopup" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    showmessage(TJvNavPanelButton(sender).caption);
    J'obtiens bien le caption de mon boutton.
    Ca plante surement car, tu tentes de libérer un object, dans lequel une méthode lui appartenant est en cours d'exécution...
    Le probleme ne se présente pas si j'associe la meme procedure à un boutton crée avant l'execution.

    à préciser :
    -Le probleme est le meme avec des Tbutton
    -Le code "TJvNavPanelButton(sender).Free;" produit éxactement le meme effet.

  5. #5
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 865
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 865
    Points : 11 334
    Points
    11 334
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.JvNavPanelButton1ContextPopup(Sender: TObject; 
      MousePos: TPoint; var Handled: Boolean); 
    begin 
    // essaye de rajouter :
    Handled := True;
    sender.Free; 
    end
    ;
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  6. #6
    Membre régulier Avatar de monstroplante
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 107
    Points : 76
    Points
    76
    Par défaut
    Ca marche !!

    Merci bcp.

    Tu as une explication livrée avec la solution ?

  7. #7
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 865
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 865
    Points : 11 334
    Points
    11 334
    Billets dans le blog
    6
    Par défaut
    le paramètre Handled passé en var indique si la routine de traitement a traité le message (True).
    sinon, le système essaye de passer le traitement au gestionnaire suivant, qui ne trouve plus de sender (il a été libéré) => EAccessViolation
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  8. #8
    Membre régulier Avatar de monstroplante
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 107
    Points : 76
    Points
    76
    Par défaut
    merci

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

Discussions similaires

  1. [POO] destruction d'objet ?
    Par karibouk dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 21/01/2009, 11h36
  2. [VB.NET 2.0] Destruction d'objet
    Par Torkan dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/06/2006, 02h02
  3. destruction d'objet
    Par goth dans le forum Langage
    Réponses: 8
    Dernier message: 19/03/2006, 15h52
  4. destruction d'objets dans un vecteur
    Par titouille dans le forum C++
    Réponses: 12
    Dernier message: 28/07/2005, 19h20
  5. [débutante][Concept] Destruction d'objet, mode d'emploi?
    Par skea dans le forum Général Java
    Réponses: 4
    Dernier message: 12/06/2004, 21h48

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