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 et changement de Frame


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 115
    Points : 60
    Points
    60
    Par défaut creation et changement de Frame
    Dans mon code j'utilise plusieurs "Frame" ( qui descendent toutes de Frame_Model) que je passe ensuite dans un Panel:
    J'utilise ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Frame_Model := TFrame_Exemple.Create(self);
    Frame_Model.Parent := panel_client;
    Mais voila ce code est dans une procédure que j'utilise a nouveau plus loin dans mon code donc j'ai un message d'erreur qui dit:
    "Frame_Exemple existe déjà" (ce qui est normal je comprend tout a fait.
    Alors là, j'ai 2 choix:

    Choix 1:
    Je cherche donc une procédure du style:
    "TFrame_Exemple.Free"
    Mais ca n'a pas l'air d'exister

    Choix 2:
    Je doit faire comprendre a mon programme que
    ma frame modele "Frame_Model" doit recevoir a nouveau "Frame_Exemple"

    ...

  2. #2
    Membre habitué Avatar de neodelphi2007
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 202
    Points : 179
    Points
    179
    Par défaut


    Tu déclare deux fois "TFrame_Exemple" ou "Frame_Exemple" dans la même unitée ?

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 115
    Points : 60
    Points
    60
    Par défaut
    Bah non , même pas...

  4. #4
    Membre habitué Avatar de neodelphi2007
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 202
    Points : 179
    Points
    179
    Par défaut
    Frame_Model étant une variable unique dans ton application (un singleton)
    tu peut faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    VAR
        Frame_Model:TFrame_Model;
    .
    .
    .
    Frame_Exemple := TFrame_Exemple.Create(self);
     
    Frame_Model:=Frame_Exemple;
    Frame_Model.Parent := panel_client;
    puis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Frame_Exemple2 := TFrame_Exemple2.Create(self);
     
    Frame_Model:=Frame_Exemple2;
    Frame_Model.Parent := panel_client;
    comme ca tu peut changer de frame

  5. #5
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Dans le Create de la Frame il faut lui affecter un nom. Sinon tu te retrouves avec 2 composants portant le même nom et ça n'est pas permis (je ne sais plus si c'est juste dans le même conteneur ou non?).
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 716
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 716
    Points : 13 186
    Points
    13 186
    Par défaut
    On peut avoir plusieurs composants sans nom sans problème. Mais comme dit Linkin, si tu décides dans définir un, il doit être unique.

    Et tu risques bien d'avoir le même problème avec tous les composants du frame (je ne suis plus sûr , mais tu seras vite fixé).

  7. #7
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Pour en revenir à ce que tu disais dans ton premier message
    Citation Envoyé par Vilukariok Voir le message
    Choix 1:
    Je cherche donc une procédure du style:
    "TFrame_Exemple.Free"
    Mais ca n'a pas l'air d'exister
    Bien sûr, c'est :
    qu'il faut faire. Tu détruis l'instance pas la classe ! Et je te conseille vivement de le faire avant d'affecter un nouvel objet à ta variable, sinon à mon avis ton objet risque fort de ne jamais être détruit.

    Maintenant, concernant ton message d'erreur, il y a quelque chose que je ne comprends pas : dans le code que tu nous montres, tu appelles ton objet Frame_Model, et le message parle de Frame_Exemple... J'en déduis que ce ne sont pas ces deux lignes de code-là qui posent problème. Peux-tu nous donner qqs détails sur le reste de ta procédure ?
    Roland

  8. #8
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Pour les frames, il faut bien leur affecter un nom (delphi 7), sinon on a bien le message.
    [code]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ---------------------------
    Notification d'une exception du débogueur
    ---------------------------
    Le projet Project1.exe a provoqué une classe d'exception EComponentError avec le message 'Un composant nommé Frame3 existe déjà'.  Processus stoppé. Utilisez Pas-à-pas ou Exécuter pour continuer.
    ---------------------------
    OK   Aide   
    ---------------------------
    J'ai fait le test avec une form avec un bouton pour créer une frame et une frame vide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      TFrame3.Create(Self).Parent := Self;
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  9. #9
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Citation Envoyé par rsc Voir le message
    Maintenant, concernant ton message d'erreur, il y a quelque chose que je ne comprends pas : dans le code que tu nous montres, tu appelles ton objet Frame_Model, et le message parle de Frame_Exemple... J'en déduis que ce ne sont pas ces deux lignes de code-là qui posent problème.
    Peux-tu nous donner qqs détails sur le reste de ta procédure ?
    Je retire ce que j'ai dit . Ce qui est en jeu ici n'est pas le nom de la variable qui pointe vers ton composant, mais la propriété Name du composant: elle doit être unique dans une fiche.
    Si tu appelles la création d'un Frame depuis un autre Frame, je suppose qu'ils doivent cohabiter. Il faudrait donc que tu leur affectes un Name unique entre leur création et leur insertion dans la fiche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      Frame_Model := TFrame_Exemple.Create(self);
      Frame_Model.Name := 'Nom_Unique';
      Frame_Model.Parent := panel_client;
    Roland

  10. #10
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 115
    Points : 60
    Points
    60
    Par défaut
    OK, merci pour vos réponses.
    Il s'avère que le ".free" a marché.
    Je suis confus...

    Et pour l'histoire du nom unique, je ne comprend pas pourquoi , il ne me renvoie pas d'erreur si je ne le précise pas.En gros je n'ai pas cette ligne:

    Frame_Model.Name := 'Nom_Unique';

  11. #11
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Bien sûr, si tu détruis toujours le Frame précédent ! Le problème du nom va se poser si tu veux que deux FrameExemple cohabitent dans ta fiche. (Je pensais que c'était le cas, puisque tu appelais ta routine depuis un autre FrameExemple disais-tu)

    Par exemple, j'ai un FramePersonne qui me permet de saisir et afficher l'identité d'une personne. Je veux pouvoir dans ma fiche saisir l'identité de toute une famille, c'est-à-dire qu'il va me falloir simultanément 4 FramePersonne pour le père, la mère et les deux enfants. Il faudra que je leur donne à chacun un nom différent (et que je les affiche à des endroits différents)
    Roland

  12. #12
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 115
    Points : 60
    Points
    60
    Par défaut
    OK, je vois l'utilité!
    Merci encore pour vos réponses

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

Discussions similaires

  1. [HTML] Changement titre frame et icone
    Par the java lover dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 04/11/2006, 00h36
  2. Form: validation ENTER et changement de Frame
    Par oimusav dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/10/2006, 18h58
  3. [excel] changement date de creation fichier
    Par djibril dans le forum Excel
    Réponses: 5
    Dernier message: 14/03/2006, 19h47
  4. [HTML] changement de frame
    Par winnie82 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 14/03/2006, 16h45
  5. [HTML] Changement de plusieurs frames
    Par Bowen dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 06/09/2005, 19h33

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