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 :

creation de Form


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    866
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 866
    Par défaut creation de Form
    bonjour,


    lorsque l'on veut suprimer l'autocreate des form (qui se fait par defaut) et pouvoir créer une form juste avant de l'utiliser j'utilise ce code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Application.CreateForm(TForm3, Form3);
    form3.ShowModal;
    form3.Free;
    est ce que c'est bon ou il manque quelque chose (form3.destroy,par exemple)

    merci

  2. #2
    Membre Expert Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 553
    Par défaut
    Ne pas faire de free avant l'utilisation : ça libère ta TForm (ça la détruit).

  3. #3
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    Voici un exemple classique de ce que je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      Form3 := TForm3.Create(Application);
      with Form3 do begin
        try
          if ShowModal = mrOk then
             ...
          else
             ...
        finally
          Release;  // et non Free.
        end;
      end;
    @+ Claudius

  4. #4
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Par défaut
    Salut
    Moi je fais directement comme ceci dans le cas d'un showmodal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      with TForm3.Create(Application) do begin
        try
          if ShowModal = mrOk then
             ...
          else
             ...
        finally
          Release;  // et non Free.
        end;
      end;
    A+

  5. #5
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    +1 Andry

    Dans le cas d'un ShowModal c'est tout à fait judicieux.

    @+

  6. #6
    Membre Expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 568
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 568
    Par défaut
    La méthode d'Andry est très concise mais il ne faut pas en abuser, elle va poser des problèmes en cas de débogage, l'objet TForm3 ainsi alloué est difficilement accessible en débogage.

    D'autre part, il était préconise par Borland d'employer Release au lieu de Free dans le cas des fiches (descendantes de TForm).

    Enfin l'emploi du bloc de protection de ressource try .. finally est plus que recommandé dans le cas de l'utilisation temporaire d'une ressource. Surtout quand la ressource est allouée et libérée au sein d'un même bloc. On entend par ressource la mémoire mais aussi toute entité qui est réservée à un usage donné et devant être libérée quand ce dernier prend fin, cela recouvre par exemple les fichiers.

    En ce qui concerne les autocreate, il na faut pas oublier de faire du vide dans le fichier dpr quand cela s'impose, en supprimant la ligne Application.CreateForm(TForm3, Form3) ou en passant par le mécanisme dédié de l'IDE.

    Par symétrie, la libération d'une fiche autocréée devrait être laissée à la VCL qui se charge de détruire les fiches autocréées en fin d'exécution. Ceci-dit rien n'interdit de les libérer explicitement, la VCL est suffisament bien conçue pour supporter ceci.

    Cdlt

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

Discussions similaires

  1. Creation de Form dans un Thread
    Par yannick_sch dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/07/2010, 18h48
  2. Creation de form dynamique
    Par Techsan dans le forum Débuter
    Réponses: 5
    Dernier message: 26/05/2010, 15h45
  3. Creation de forms
    Par anubis_1001 dans le forum Débuter
    Réponses: 7
    Dernier message: 28/11/2008, 12h20
  4. Creation dune Form ds un Thread
    Par Soulama dans le forum Langage
    Réponses: 1
    Dernier message: 17/01/2006, 12h41

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