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 :

Fermeture implicite de composants


Sujet :

Langage Delphi

  1. #1
    Invité
    Invité(e)
    Par défaut Fermeture implicite de composants
    Bonjour.
    J'ai une application (Delphi 6) avec une seule fiche principale qui comprend un composant MediaPlayer. Il y a différentes procédures "événementielles" et une "sous-procédure" appelée à partir des précédentes (entrées-sorties USB via un adaptateur). J'ai constaté le phénomène curieux suivant : si je ferme le MediaPlayer (Close après Stop et avant fermeture de la fenêtre principale) à partir de ma procedure d'entrée-sortie (suite à une I/O Error générée par l'adaptateur) afin de "tout" quitter, il y a souvent une disparition partielle de la fenêtre, l'image se met à "scintiller" et le système se bloque, il ne me reste plus que le gestionnaire de tâches ; ce phénomène disparaît si je ferme ma fenêtre sans fermer le MediaPlayer (?). Ma question est : est-ce que la fermeture d'une fiche (par close) ferme implicitement et PROPREMENT également ce type de composant qui y est inclus ?
    Merci d'avance ...

  2. #2
    Invité
    Invité(e)
    Par défaut Complément
    "Disparition partielle de la fenêtre" correspond en fait à la non-visibilité de composants TImage qui se retrouvent cachés ...

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 563
    Points : 25 165
    Points
    25 165
    Par défaut
    Le Close ne libère pas forcément la fenêtre

    Le cas d'une fenêtre principale est particulier !
    Sa fermeture provoque l’arrêt du programme
    Cela appel le destructeur de la fenêtre donc celui du TMediaPlayer
    Par contre, le TMediaPlayer n'appel pas forcément Stop puis Close par contre sa mémoire est libéré et ses handles aussi

    Et il faut faire attention à ce que l'on fait depuis un gestionnaire d'évènement
    j'ignore le lien avec ton module IO

    On pourrait penser que la boucle RUN ne passe plus les WM_PAINT à la MainForm d'où l'absence d'affichage
    Est-ce du blanc comme lors d'un blocage ou alors on voit les traces d'anciens éléments ?


    le cas d'une fenêtre secondaire (teste ce mode aussi !)
    Pense au caFree dans le OnClose comme Action, cela peut changer le comportement
    Si c'est fenêtre modale, tu libères explicitement la fenêtre après le ShowModal

    Sans un minimum de code difficile de répondre plus !
    As-tu réussi de le reproduire dans un autre projet SANS le module IO en simulant un faux plantage

  4. #4
    Invité
    Invité(e)
    Par défaut Topic terminé ...
    Merci de ta réponse ... Le problème est que c'est la première (et peut-être la dernière ...) fois que je développe avec des modules USB (FTDI et IOWarrior), je trouve que l'USB dans ce contexte c'est de la m... (désolé pour la netiquette). Le IOW n'a pas de reset donc en cas de plantage, Unplug or Pray. Le FTDI (connu dans le cadre USB MOD4 et assimilés, maintenant remplacés) a un reset ; effectivement après un reset le module n'est plus reconnu et génère une erreur IO, je voulais donc carrément fermer le programme car après un reset de toute manière tout est inactif. Gag, le pilote 2.0.8 qui marchait à peu près (le dernier pour 2000) n'est plus en ligne, le 2.0.6 génère en cas de reset une erreur "débranché sans éjecter" (!), il ne pousse pas le vice à rajouter l'image des "lapins crétins" Bref, le port parallèle quant à lui ne fait pas de feedback pour SAVOIR SI les choses se sont bien passées ou non, elles se passent de toute manière BIEN. Et à ceux qui diront qu'il n'y a plus de port parallèle sur les bécanes, les sociétés d'Extrême Orient se feront un plaisir de te vendre une carte fille

Discussions similaires

  1. JDBC - Fermeture des composants
    Par romano62880 dans le forum JDBC
    Réponses: 7
    Dernier message: 18/02/2013, 11h16
  2. Composant CPortlib Ouverture et fermeture d'un port
    Par clecle dans le forum C++Builder
    Réponses: 0
    Dernier message: 19/03/2008, 18h21
  3. Redéfinir l'événement OnExit de mon composant TEditFloat
    Par Seb des Monts dans le forum C++Builder
    Réponses: 5
    Dernier message: 18/06/2002, 16h10
  4. Installer ses composants
    Par Geronimo dans le forum C++Builder
    Réponses: 14
    Dernier message: 18/06/2002, 14h51
  5. Re-dimensionnement automatique de composants
    Par ludo_7 dans le forum C++Builder
    Réponses: 10
    Dernier message: 16/05/2002, 16h35

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