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

Delphi Discussion :

dll dynamique et TForm en ShowModal


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de declencher
    Inscrit en
    Mai 2003
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 441
    Par défaut dll dynamique et TForm en ShowModal
    Bonjour,

    J'ai un problème stupide qui n'apparait pas après chaque compilation de ma dll. cette dll contient une TForm, et une méthode exporté qui crée dynamiquement la forme et l'affichage en showmodal.

    Je ne sais pas si ça a un lien, mais la fenêtre qui appel cette méthode exportée est aussi en ShowModal. Le hic c'est que quand je ferme la fenêtre créée dynamiquement (celle de la dll), je la détruit, puis je ferme la fenêtre en ShowModal de mon appli (la première affichée l'écran principal de mon appli, celle qui appelle la fenêtre de la dll). C'est à ce moment là que mon appli principal se réduit dans la barre des tâches et il faut cliquer 3 ou 4 fois dessus pour qu'elle réapparaisse...

    Auriez vous une idée pour me dépanner ?

    merci !

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    Salut

    As-tu essayé de mettre un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.BringToFront;
    juste après avoir fermé la fiche de la DLL?
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  3. #3
    Membre émérite Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Par défaut
    Citation Envoyé par declencher
    J'ai un problème stupide qui n'apparait pas après chaque (...)
    j'ai fais un petit prog qui reproduis ce que tu dis et je n'ai aucun probleme tout mes fiches dont celle de la dll se ferment normalement.
    c'est donc pas lié au fait que la form appelante la form contenu dans la dll soit modale.

    le fait que ton probleme (stupide) n'apparaissent pas tout le temps denote un bug aléatoire (donc trés difficile à trouver) dans le code...
    bon courage ou fais pété le code qu'on t'aide....

  4. #4
    Membre émérite Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Par défaut
    Citation Envoyé par Fabrice ROUXEL 1
    Tu relances l'appli, maintenant tu ne cliques que sur le bouton2 -> tu ne peux plus fermer la form2! (la petite croix dans la zone non cliente à droite)
    dans ce cas, il faut dire a la form2 que faire lors de l'évenement close

    genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      ShowWindow(Handle, SW_HIDE);
    end;

  5. #5
    Membre éclairé Avatar de declencher
    Inscrit en
    Mai 2003
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 441
    Par défaut
    Kaféine,

    Pourrais tu me fournir el code de l'appli que tu as reproduit ? Moi je n'ai pas toujours le problème, ça dépend de la compilation de la dll. C'est à dire que certaine fois après compilation, le phénomène se produit.

    J'ai pas vraiment de code à fournir tellement y'a rien dans mon code justement. Dans le OnClose de la fenêtre qui est dans la dll et qui s'affiche en showModal, j'ai bien mis les ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      ModalResult := mrOk;
      Action := caFree;

  6. #6
    Membre émérite Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Par défaut
    voici mon code appli+dll


    heu petite précision j'utilise Delphi 7

  7. #7
    Membre éclairé Avatar de declencher
    Inscrit en
    Mai 2003
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 441
    Par défaut
    Pedro,

    J'ai tenté d'utiliser ta ligne de code dans l'évènement OnClose de chacune des 2 fenêtre en ShowModal, le comportement reste inchangé :/

Discussions similaires

  1. appel de dll dynamique
    Par EnigmuS dans le forum C
    Réponses: 30
    Dernier message: 06/04/2007, 16h44
  2. Réponses: 1
    Dernier message: 02/03/2007, 22h58
  3. Charge une DLL dynamiquement
    Par K.othmane dans le forum Delphi
    Réponses: 8
    Dernier message: 30/07/2006, 22h48
  4. cree un dll dynamique
    Par totorien dans le forum MFC
    Réponses: 1
    Dernier message: 15/06/2005, 14h09
  5. Réponses: 8
    Dernier message: 22/12/2004, 22h57

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