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 :

[TForm] OnActivate et Create


Sujet :

Langage Delphi

  1. #1
    Membre actif
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Points : 234
    Points
    234
    Par défaut [TForm] OnActivate et Create
    Bonjour,
    Je viens de migrer mon code D6 vers D7, et je me rends comptes d'un truc ahurissant :

    Lorsque je cree mes fenetres, je passe par la procedure OnActivate !!!

    Voici comment je code ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    MaForm := TMaForm.Create(Self);
    try
      MaForm.ShowModal;
    finally
      MaForm.Release;
    end;
    Admettons que j'ai cree une procedure pour repondre a l'evenement OnActivete :
    Avec D6, j'avais OnActivate qui se declenchait sur l'ordre showmodal seulement.
    Maintenant, ma procedure est declenchee sur l'ordre TMaForm.Create(Self);

    Qu'est ce qui se passe ????? Quelqu'un a une idee ?

  2. #2
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    je suis en D7 et je te confirme que l'évenement onActivate est déclenché dès que la fenêtre prend le focus et deActivate lorsqu'elle perd sont focus.

    Si tu as une MDI avec deux fenetres filles ouvertes et visibles, le fait de jongler entre les deux va lancer des Activate et DeActivate dans tous les sens.

    Je n'utilisais pas ces évenements en D6 donc je ne peux que t'en parler du coté D7 de la force.

    Tu devrais peut-être penser à mettre ton code ailleurs

    Bon courage !

  3. #3
    Membre actif
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Points : 234
    Points
    234
    Par défaut
    Merci, c'est ce que j'ai fait, mais c'est un comportement qui me surprend.
    J'aimerais bien savoir si ca le fait chez quelqu'un d'autre.

    On est bien d'accord : le fait de creer une fenetre n'a rien a voir avec le fait de lui donner le focus ! Donc c'est pas normale de paser dans OnActivate quant je fait Create !

    Pour info, je travail en CLX

  4. #4
    Membre chevronné
    Avatar de Pierre Castelain
    Inscrit en
    Avril 2002
    Messages
    523
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 523
    Points : 1 943
    Points
    1 943
    Par défaut
    On est bien d'accord : le fait de creer une fenetre n'a rien a voir avec le fait de lui donner le focus ! Donc c'est pas normale de paser dans OnActivate quant je fait Create !
    Sauf si la fenêtre est visible (propriété Visible à true).

  5. #5
    Membre actif
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Points : 234
    Points
    234
    Par défaut
    Bonjour !

    Sauf si la fenêtre est visible (propriété Visible à true).
    Non non, elle est bien a False.

  6. #6
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    Si c'est dans une MDI les filles font le OnActivate dès qu'on les créé aussi j'ai cru voir, sans attendre l'instruction .show ou .showmodal

  7. #7
    Membre actif
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Points : 234
    Points
    234
    Par défaut
    FormStyle est a fsNormal

  8. #8
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    si tu mets un trace sur le onActivate et le OnDeActivate, as-tu les deux logs d'affiché ?
    Si oui ça voudrait dire que dans le create il affiche ta form et il s'apperçoit que visible=false alors Pouf il l'enlève.

    (ne pas faire des points d'arret ou showmessage pour tester ça, écriture dans un fichier log.txt,sinon ça prend le focus et ça va te lancer X fois le Activate / DeActivate)

  9. #9
    Membre actif
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Points : 234
    Points
    234
    Par défaut
    Merci Sylvain pour tes reponses.

    Peux tu m'expliquer ce qu'est un log. Merci

    Non pas la peine, j'ai compris ce que tu voulais dire !!!

Discussions similaires

  1. Create : TFrom & Tbutton [Close TForm]
    Par Gregory666 dans le forum Débuter
    Réponses: 3
    Dernier message: 12/08/2013, 10h25
  2. Taille d'un TForm à l'état Maximized
    Par Altau dans le forum C++Builder
    Réponses: 2
    Dernier message: 13/06/2003, 12h57
  3. TXMLModule.create - name = resource not found
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 04/03/2003, 10h54
  4. [TForm] Ne pas autoriser l'ouverture d'un form
    Par sbeu dans le forum Composants VCL
    Réponses: 6
    Dernier message: 11/10/2002, 11h20
  5. Probleme d'impression avec la méthode TForm->Print()
    Par Kid Icarus dans le forum C++Builder
    Réponses: 13
    Dernier message: 31/07/2002, 14h26

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