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

Lazarus Pascal Discussion :

Rémanence affichage Form Showmodal [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Rémanence affichage Form Showmodal
    Bonjour,
    Le Button d'une Form1 ouvre ainsi une Form2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TForm2.bt1Click(Sender: TObject);
    begin       
     if not Assigned(Form2) then
        Application.CreateForm(TForm2, Form2);
     Form2.Showmodal;
     if not Form2.bEnvoi then exit;
     [...]
    La Form2 est fermée par un simple Close (dans son propre code).

    Sous Windows 7 (et pas sur tous les appareils), une fois ce code exécuté, il reste une "trace résiduelle" de Form2 à l'écran : une partie de la Form2 reste dessinée en avant-plan dans Form1 souvent d'ailleurs dans un autre élément de Form1 (une StringGrid par exemple).

    J'ai pensé un instant que pour une raison mystérieuse, c'était le if not Form2.bEnvoi qui pouvait en être la cause. Mais une fois enlevé ce code, cela ne change rien.

    Bref, pourquoi cette rémanence (aucun calcul lourd dans la Form2, pas de connexion à une BDD et pas de chargement d'images) ? Et comment l'éviter "systématiquement" ?

    Merci. Cordialement.
    Gilles
    Dernière modification par Invité ; 09/09/2011 à 11h42.

  2. #2
    Membre émérite Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Par défaut
    Bonjour

    Le problème est le même si tu crée la fiche TForm2 lors du lancement de l'application ?

  3. #3
    Membre émérite
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut
    Ajouter le code suivant après la fermeture de la form2 ?


  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Il s'agissait en réalité d'une "interaction" dans une séquence de la StringGrid suivant l'appel à Form2...
    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
    19
    20
    21
    22
    23
    24
    Form2.Showmodal;
    if Form2.bEnvoi =  False then exit;
    //Traitement à partir de la valeur retournée
    with StringGrid1 do begin
     BeginUpdate();
     RowCount := 1;
     with Query1 do begin
       [...]
       try
        Open;
        if isEmpty then begin
          Close;
          MessageDlg(...'Pas d''historique'...) //--> Un bout de Form2 apparaît ds StringGrid1 (de Form1 où figure ce code);
        else begin
          [...]
          Close;
        end;
       except
        Close;
        MessageDlg(... 'Historique inaccessible'...)
       end;
     end; { with Query1}
     EndUpdate(True);
    end; {with StringGrid1}
    L'emploi (ie le déclenchement) d'un MessageDlg dans une séquence StringGrid.BeginUpate/EndUpdate provoque, dans mon cas, une "rémanence" d'un morceau de la Form2 dans le Form1.StringGrid1 sur XP et sous Seven à l'issue de l'affichage du message. Compte tenu de la solution, le terme de rémanence est donc techniquement mal choisi même si l'effet visuel y ressemble.

    J'ai placé les MessageDlg en dehors de la séquence StringGrid.BeginUpate/EndUpdate (ie après le StringGrid.EndUpdate) et les effets de rémanence ont disparu.

    @Patrick : oui cela ne change rien.
    @CapJack : l'ajout du code proposé aggrave la situation chez moi. Même sans déclenchement de MessageDlg (ie lorsque le Query n'est pas vide), l'effet de rémanence apparaît.

    Merci à tous deux pour votre aide.
    Cordialement. Gilles
    Dernière modification par Invité ; 15/09/2011 à 10h09.

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

Discussions similaires

  1. Problème affichage form avec Internet Explorer dans un menu
    Par dupard2006 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 28/03/2006, 19h26
  2. [MFC] Affichage FORM
    Par zalx dans le forum MFC
    Réponses: 4
    Dernier message: 27/03/2006, 09h29
  3. affichage form
    Par Flagny dans le forum IHM
    Réponses: 7
    Dernier message: 12/12/2005, 17h32
  4. [delphi 5 pro] Form.ShowModal, message d'erreur
    Par mariustrezor dans le forum Bases de données
    Réponses: 6
    Dernier message: 07/12/2004, 08h22
  5. affichage forme en fonction de la resolution de l'ecran
    Par shiners300 dans le forum C++Builder
    Réponses: 1
    Dernier message: 24/11/2004, 14h33

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