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

EDI Delphi Discussion :

Supprimer un objet sur un TFrame


Sujet :

EDI Delphi

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut Supprimer un objet sur un TFrame
    Bonjour,

    J'ai construit un objet TFrame et je l'ai placé sur plusieurs fiches de mon application.
    J'ai ensuite dû, à la demande du client supprimer un objet du TFrame.

    Le problème est qu'ensuite à l'utilisation toutes les formes qui utilisent ce TFrame posent un problème lors de leur création et demandent l'objet que j'ai supprimé.
    Je pense que si je supprime le TFrame sur les formes et que je le recréée cela va marcher mais j'ai pas mal de fiches dans ce cas.
    Je m'en suis sorti en recréant cet objet et en le mettant invisible mais je voudrai savoir si il existe un moyen de faire plus propre.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 429
    Points : 24 794
    Points
    24 794
    Par défaut
    Plus propre avec les Frames

    une solution, une Frame sans le bouton, et une autre Frame héritée contenant le boutons

    Sur tes formes, tu utilises la Frame ou la Frame héritée selon tes besoins !


    Le Visible, c'est un grand classique !
    L'héritage de Frame sera bien plus pénible !
    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 confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Ce n'est pas vraiment mon besoin.
    Ce que j veux c'est supprimer un objet définitivement sur le TFrame et que cela ne pose pas de problème en ouvrant les TForm qui l'utilise.

    J'avais pensé modifier manuellement de DFM.

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 429
    Points : 24 794
    Points
    24 794
    Par défaut
    Ah, je pensais que voulais supprimer un objet de la Frame pour une fenêtre spécifique !

    Si tu supprimes un objet sur la TFrame, cela le supprimera de toutes les fenêtres l'utilisant !
    L'humeur de l'EDI a ce sujet est variable, parfois il faut aucune fenêtre l'utilisant et parfois mieux vaut qu'elles soient toutes ouvertes

    Si tu as changé des valeurs, dans le DFM des TForm, il y a un inherited Frame1 ... qui traine !
    Et cela peut compliquer la tache de suppression

    Je le faisais à la main via Notepad parfois comme tu sembles déjà te résoudre !

    Je n'utilise pas les TFrame, j'ai trop eu de problème avec, et à chaque fois, le code associé était affreux (genre code différent selon le nom de la fênetre conteneur)
    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

  5. #5
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    L'humeur de l'EDI a ce sujet est variable, parfois il faut aucune fenêtre l'utilisant et parfois mieux vaut qu'elles soient toutes ouvertes

    Si tu as changé des valeurs, dans le DFM des TForm, il y a un inherited Frame1 ...
    je crois que c'est plus "inline Frame1: TMyFrame" plutot que "inherited ..."

    Effectivement l'EDI a ce sujet est un peu tatillon. Je crois que toutes les form explicitement usesées dans le dpr seront mises à jour (a condition que tu fasses ta modif en ayant le dpr d'ouvert).
    Apres, tout dépend des modifiations que tu as sur les frames posées dans tes forms. Si elles sont strictement identiques (pas de déplacement de composant inclus, pas d’événement ajoutés sur les compos de la frame, ...), alors delphi n'est même pas sensé mettre le code du contenu de la frame dans le dfm de la form.

    Je vois plusieurs solutions à ton problème :
    • rechercher dans tous les dfm le nom de ton bouton (a condition qu'il ne s'appelle pas "button1" ), et virer le bloc inherited ... end de ton bouton (avec un editeur externe), le .pas n'a pas à être modifié.
    • Idem mais en les ouvrant avec Delphi (en mode fiche), je crois qu'il te demandera ce qui est arrivé a ce bouton qu'il ne trouve plus (renommé, supprimé ?)
    • remettre ton bouton, ouvrir toutes les forms qui utilisent ta frame, et supprimer le bouton de la frame, pour etre sûr qu'il les met à jour


    PS : quand je dis "explicitement usesées", cela siginifie que la frame doit etre correctement déclarée, et les forms avec le "in" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Frm1 in 'Frm1.pas' {Frame1: TFrame},
    Frm2 in 'Frm2.pas' {Form2},
    PS2 : J'essaye, quand j'archive un dfm, de ne pas archiver ce qui n'a pas à etre modifié (et notamment virer les sous-composants des blocs inline ... end des frames qui n'ont pas à être différentes)

Discussions similaires

  1. Supprimer un objet / text via une macro placée sur un bouton
    Par Lauvira dans le forum VBA PowerPoint
    Réponses: 1
    Dernier message: 17/11/2012, 06h43
  2. supprimer les interlignes sur ie
    Par samourai_alex dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 30/07/2005, 18h29
  3. [VB.NET] Instanciation objet (sur class perso.)
    Par DaxTaz dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/05/2004, 12h07
  4. [API] Supprimer un objet
    Par Halleck dans le forum Windows
    Réponses: 11
    Dernier message: 10/04/2004, 02h34
  5. Créer des objets sur la pile ?
    Par Cornell dans le forum Langage
    Réponses: 8
    Dernier message: 03/03/2003, 12h47

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