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

Composants VCL Delphi Discussion :

Modifier un composant sans toucher son code


Sujet :

Composants VCL Delphi

  1. #1
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 487
    Points : 3 120
    Points
    3 120
    Par défaut Modifier un composant sans toucher son code
    Bonjour,

    Ok, le titre peut paraître un peu bizarre comme ça mais je vais m'expliquer.
    C'est en rapport avec mon histoire de TLabeledEdit qui m'a donné une idée (peut-être stupide, c'est vous qui le direz )

    Prenons un composant de la VCL comme le TEdit ! Si je veux ajouter une propriété je dérive le TEdit. Classique !

    Maintenant, je me dis qu'on peut peut-être créer un composant qui, posé sur une TForm où se trouvent des TEdit, ajouterait automatiquement une propriété aux TEdit qui indiqueraient une appartenance au composant. Bon, c'est pas clair ...

    Donc, admettons que je crée un composant "TRegroupement" ! Je le pose sur ma TForm sur laquelle il y a 3 TEdit.
    Une propriété s'ajoute automatiquement aux TEdit dans laquelle je peux indiquer le composant regroupement auquel si il se rattache.
    En quelque sorte, un genre de TGroupbox non visible.

    Est-ce que c'est quelque chose qui peut se faire ou je rêve tout éveillé ?
    J-L aka Papy pour les amis

  2. #2
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 673
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 673
    Points : 7 054
    Points
    7 054
    Par défaut
    C'est pas à ça que servent les class helpers ?

    (https://www.developpez.net/forums/d1...009-superieur/)
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 763
    Points : 13 381
    Points
    13 381
    Par défaut
    Ce serait possible à l'aide d'une TOwnedCollection. C'est ce qu'utilise TRelativePanel pour ajoute des propriétés aux composants qu'il contient (les alignements).

  4. #4
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 487
    Points : 3 120
    Points
    3 120
    Par défaut
    @Lung : Je ne pense pas que les helpers puissent m'aider pour ça. Moi je cherche à obtenir un moyen de regrouper plusieurs facilement pour y avoir accès.

    @Andnotor : Je ne connaissais pas cette classe. Je viens d'essayer le TGridPanel et je vois les propriétés en plus sur un TButton que je mets dans le composant.
    Par contre je ne vois pas comment mettre ça en place dans un composant non visuel.
    Je vais aller voir dans le code source de la VCL pour voir comment c'est foutu.

    Je reviens si je galère trop
    J-L aka Papy pour les amis

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 763
    Points : 13 381
    Points
    13 381
    Par défaut
    Citation Envoyé par Papy214 Voir le message
    Par contre je ne vois pas comment mettre ça en place dans un composant non visuel.
    C'est le même principe que tous les composants liés : énumération des composants déjà présents à l'ajout du tien puis traitement des notifications pour maintenir sa liste à jour.

  6. #6
    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
    Pourquoi ne pas tout simplement ajouter un TPanel sans bordure et gérer cela par le code au lieu de le faire via le RAD ?

    Le Helper ou une redéfinition locale permettrait d'encapsuler ce Parent TPanel pour d'autres besoins.
    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

  7. #7
    Invité
    Invité(e)
    Par défaut
    Je ne connaissais pas cette classe. Je viens d'essayer le TGridPanel et je vois les propriétés en plus sur un TButton que je mets dans le composant.
    Regarde du coté TFrame

  8. #8
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 487
    Points : 3 120
    Points
    3 120
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Pourquoi ne pas tout simplement ajouter un TPanel sans bordure et gérer cela par le code au lieu de le faire via le RAD ?

    Le Helper ou une redéfinition locale permettrait d'encapsuler ce Parent TPanel pour d'autres besoins.
    Oui, c'est la solution la plus simple.
    C'est juste que ce "problème" (qui n'en est pas vraiment en lui-même) m'a fait me poser la question de départ.
    A savoir, comment ajouter une propriété à un composant à partir d'un autre.

    Il y a plein de solution du même genre. J'aurais pu aussi renseigner le tag des composants et parser à chaque fois tous les tlabelededit pour retrouver ceux avec le tag défini.
    @Volid Le TFrame en est une autre mais c'est moins facile parce que le nombre de TLabelEdit est différent à chaque fois. Dans ce cas, autant créer directement le composant qui va ajouter des TLabelEdit à volonté et se redimensionner lui-même.
    J-L aka Papy pour les amis

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/06/2019, 12h32
  2. Pouvoir modifier son site sans toucher au code via une interface
    Par openeyes dans le forum Général Conception Web
    Réponses: 5
    Dernier message: 04/11/2010, 12h09
  3. modifier propriété composant sans refresh de la page
    Par dumser1 dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 30/04/2008, 09h23
  4. Crypter transit des données sans toucher au code source
    Par thecrafty dans le forum Protocoles
    Réponses: 2
    Dernier message: 08/06/2007, 17h31
  5. modifier une propriété sans connaitre son nom
    Par cyberchand dans le forum C#
    Réponses: 2
    Dernier message: 17/04/2007, 16h17

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