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 :

utilisation de FreeAndNil pour MDIChildren


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 111
    Points : 64
    Points
    64
    Par défaut utilisation de FreeAndNil pour MDIChildren
    Bonjour
    je voudrais fermer et associer la valeur nil, de toutes les fenêtre Child;
    J'ai écrit le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for I := self.MDIChildCount-1 downto 0 do
    FreeAndNil(self.MDIChildren[I]);
    Erreur: un objet constante ne peut pas être passé comme var

    Qu'est ce que je dois passer comme paramètre pour FreeAndNil?
    Merci

  2. #2
    Membre éclairé 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
    Points : 736
    Points
    736
    Par défaut
    Salut,

    ceci suffit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for I := self.MDIChildCount-1 downto 0 do
      MDIChildren[I].Close;
    avec dans le onclose je crois de la form mdi de base, Action = caFree.

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    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 586
    Points : 25 262
    Points
    25 262
    Par défaut
    En fait le FreeAndNil, n'a pas de raison d'être, en y reflechissant, si l'erreur sur var n'existat pas, il est inutile d'affecter nil à MDIChildren[I] car la Notification de la libération va naturellement supprimé cet item de la liste, d'où le parcours en sens inverse de la Liste, si tu ne veux pas mettre
    Action := caFree dans chaque OnClose (si tu n'as pas d'ancêtre MDI commun), tu peux utiliser Free tout simplement !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for I := self.MDIChildCount - 1 downto 0 do
      MDIChildren[I].Free;
    Tu peux essayer le Release à place du Free

  4. #4
    Membre éclairé 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
    Points : 736
    Points
    736
    Par défaut
    Contrairement a ShailLeTroll, je dirais si tu n'as pas d'ancêtre commun MDI, crée en un!
    D'ailleurs je me demande bien comme on fait pour gérer une application MDI sans une fenêtre enfant de base ?

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    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 586
    Points : 25 262
    Points
    25 262
    Par défaut
    Tu sais, l'utilisation d'une classe héritée de TForm comme base des autres Form d'un projet est assez rare, cela demande un minimum de connaissance objet et surtout de considérer la Form comme Objet avec tout ce que cela implique ... ce dernier n'est pas évident lorsque les développeurs considèrent Delphi pour juste un Clickodrome !

    "Comment on fait pour gérer une application MDI sans une fenêtre enfant de base"
    C'est simple, tu ponds un code souvent vilain et sans architecture, pour les évolutions, tu en chies ...
    Et lorsque tu reprends le code d'un autre ..., tu le maudit

Discussions similaires

  1. [XSL] utiliser une variable pour nom d'élément
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 13
    Dernier message: 07/09/2004, 13h58
  2. Utilisation de CASCADE pour mise à jour
    Par fuelcontact dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/08/2004, 08h49
  3. utilisation du mid pour tester le début d'un champ
    Par PrinceMaster77 dans le forum ASP
    Réponses: 4
    Dernier message: 09/07/2004, 13h10
  4. Réponses: 36
    Dernier message: 13/05/2004, 18h22

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