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 :

Création dynamique de TFrame et Parent


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 48
    Par défaut Création dynamique de TFrame et Parent
    Bonjour,
    J'essaye de créer dynamiquement une TFrame qui a été conçue en design time et de la coller dans un panel d'une fenêtre.
    Au début, A La conception de ma TFrame j'ai deposé en design time des boutons, des labels et des edits, rien de mechant...
    à la création de ma fenetre principale je fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FFileManagementFrame := TFileManagementFrame.Create(Self);
    FFileManagementFrame.Parent := UnPanelDeLaFrame;
    Tout se passe bien ... puis après j'ai decidé de rajouter des TGroupBox à la Frame... depuis à la création de la Frame cad sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FFileManagementFrame := TFileManagementFrame.Create(Self);
    Il me sort "Le contrôle FileManagementFrame n'a pas de fenetre parente", chose qui devrait arriver à la ligne suivante ou je devais affecter le parent...
    Sauriez à quoi est dû ce problème?
    Merci

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 093
    Par défaut
    Personnellement, je n'aime pas les Frames, je fais la même chose que toi, mais simplement avec des Forms ...

    Sinon, j'ai eu ce problème lorsque je charge une DFM en RunTime (WriteComponent, ...), le contrôle doit être parenté, j'ai un vague souvenir que cela se produisait si la propriété align était autre que alnone, mais j'en suis pas sur ...

    Je te dirais, de créer ta frame, de coller le parent en 1ère action, puis d'ajouter tes compos derrières
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 48
    Par défaut
    Citation Envoyé par ShaiLeTroll
    j'ai un vague souvenir que cela se produisait si la propriété align était autre que alnone, mais j'en suis pas sur ...
    Ma proprieté Align est sur alAlone mais ça ne marche pas ...

    Citation Envoyé par ShaiLeTroll
    Je te dirais, de créer ta frame, de coller le parent en 1ère action, puis d'ajouter tes compos derrières
    Justement je voulais pas faire ça pour pouvoir faire la conception de ma frame en design time et non en runtime

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Il faut que le contenant soit aussi défini dans le create de ta frame

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    FFileManagementFrame := TFileManagementFrame.Create(Le_Contenant_De_la_frame);
    FFileManagementFrame.Parent := Le_Contenant_De_la_frame;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 48
    Par défaut
    Citation Envoyé par Malatar
    Il faut que le contenant soit aussi défini dans le create de ta frame

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    FFileManagementFrame := TFileManagementFrame.Create(Le_Contenant_De_la_frame);
    FFileManagementFrame.Parent := Le_Contenant_De_la_frame;
    Je viens d'essayer ça mais ça ne marche pas non plus ...

  6. #6
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    @ Malatar:Théoriquement, ce n'est pas obligatoire que le propriétaire soit aussi le conteneur visuel, de plus, le conteneur visuel pourrait être aussi la forme ..


    J'ai eu aussi le problème 'Pas de parent', sur des TFrame héritées.
    Sur les enfants, je changeait certains compo définis dans l'ancêtre sur de la mise en forme 'mettre en avant plan'.
    -> et bing, 'pas de fen parent'.

    En faisant 'revenir à l'hérité' plus de problème.

    Et j'ai constaté, pour le cas précis de l'ordre de créations de compos, en enlevant les indices d'ordre de création dans le DFM, tout rentrait dans l'ordre.

    dans le DFM de mon Frame enfant, généré automatiquement (erreur 'pas de parent)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        inherited PanelBoutonsSortir: TJvPanel
          inherited BitBtnSortir: TJvTransparentButton [0]
          end
          inherited BitBtnValider: TJvTransparentButton [1]
          end
          inherited BitBtnAnnuler: TJvTransparentButton [2]
          end
    modifié manuellement (plus d'erreur)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        inherited PanelBoutonsSortir: TJvPanel
          inherited BitBtnSortir: TJvTransparentButton 
          end
          inherited BitBtnValider: TJvTransparentButton 
          end
          inherited BitBtnAnnuler: TJvTransparentButton 
          end
    et 'revenir a l'hérité' a pour conséquence de supprimer cette section dans le DFM, et plus d'erreur non plus.

    Donc j'ai pas de solution, si ce n'est retirer manuellement les indices dans le dfm...
    mais ca peut donner une piste ?

    Essaye de créer ta frame non pas dans le create de la form, mais dans le show de la form ?, tous les compos de la form (dont le conteneur de ta frame) seront déjà complétement créés et cela supprimera peut être le problème.
    (j'ai pas essayé).
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 48
    Par défaut
    C'est la premiere fois que j'utilise les Frames et je pense que ça sera la dernière fois ... pour ce qui est de modifier manuellement le DFM j'ai essayé de regarder mon DFM et je n'ai pas des ordre de création comme tu expliquais TicTacToe ... mais il n'y a pas moyen de passer le parent en même temps que le Owner ... comme ça on est tranquile ?

Discussions similaires

  1. Réponses: 11
    Dernier message: 29/09/2019, 14h54
  2. [TFrame] Création dynamique, comportement "bizarre"
    Par Amenofis dans le forum Composants VCL
    Réponses: 0
    Dernier message: 11/09/2008, 18h43
  3. [Rave Report] problème de création dynamique
    Par Nivux dans le forum Rave
    Réponses: 2
    Dernier message: 24/05/2003, 00h07
  4. TWebBrowser et création dynamique
    Par BakaOnigiri dans le forum Web & réseau
    Réponses: 2
    Dernier message: 01/09/2002, 10h53
  5. Création dynamique de TImages
    Par Dric dans le forum C++Builder
    Réponses: 10
    Dernier message: 08/07/2002, 12h36

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