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 :

Réutiliser un ensemble de propriétés Delphi


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2017
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2017
    Messages : 43
    Par défaut Réutiliser un ensemble de propriétés Delphi
    Bonjour a tous !
    J'aimerais savoir si en Delphi il était possible de regrouper un ensemble de propriétés afin de les assigner à un ou plusieurs composants un peu comme les classes (ou id) en CSS, ce qui permet bien évidemment de ne modifier les chose qu'à un seul endroit (pratique &#128513?
    Si oui, comment s'y prendre ?
    Merci d'avantage!!!

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 628
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Il y a bien l'utilisation des RTTI mais cela ne correspond certainement pas à une classe CSS et pas vraiment un "ensemble de propriétés" sauf bien sûr si elles sont groupées (exemple Fill d'un FMX.TRectangle)

  3. #3
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    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 089
    Par défaut
    Cela serait pas comme une sous classe comme la TFont ou la TStrings qui sont membres de nombreuses autres classes
    C'est de la composition de classe tout à fait banale

    Ensuite, il y a une sorte bibliothèque de la même classe avec différente valeur, c'est pas bien sorcier non plus.
    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

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 978
    Par défaut
    Si j'ai bien compris, tu veux utiliser une même classe dans plusieurs autres classe et faire en sorte que lorsque tu changes la valeur de la propriété d'un objet, tout les objets qui l'utilisent bénéficie de cette modification.

    Shai parle de composition et il te mets sur la voie car il s'agit de déclarer un membre de classe X au sein d'une classe A.
    Il existe de nombreux exemple sur le net.

    Moi je vais plutôt te parler d'agrégation.
    La différence est subtile mais il est toujours bon de la connaître (surtout si on te demande de modéliser cette relation).

    La relation de composition implique un lien fort entre le composant et le composé car la vie de l'objet composé est lié à celle de l'objet composant.
    L'objet A est responsable de la création et de la destruction de l'objet X.

    La relation d'agrégation implique un lien faible entre l'agrégat et l'agrégé car la vie de l'objet agrégé est indépendante de l'objet agrégat.
    L'objet X à sa vie propre et est fourni à l'objet A, mais tu peux fournir ton objet X pas seulement à A mais également à B, à C, etc.
    Cela implique bien sûr que tu fournisse la même instance de A à B et C.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    X1 := TX.Create(10);
    X2 := X1;
    A := TA.Create(X1);
    B := TB.Create(X2);
     
    X1.Value := 20; // <= Ici A.X.Value sera égal à 20 et B.X.Value sera aussi égal à 20;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    X1 := TX.Create(10);
    X2 := TX.Create(10);
    A := TA.Create(X1);
    B := TB.Create(X2);
     
    X1.Value := 20 // <= Ici A.X.Value sera égal à 20 mais B.X.Value sera toujours égal à 10

  5. #5
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par Lauper Voir le message
    Bonjour a tous !
    J'aimerais savoir si en Delphi il était possible de regrouper un ensemble de propriétés afin de les assigner à un ou plusieurs composants un peu comme les classes (ou id) en CSS, ce qui permet bien évidemment de ne modifier les chose qu'à un seul endroit (pratique &#128513?
    Si oui, comment s'y prendre ?
    Merci d'avantage!!!
    le question est un peu trop vague pour avoir une réponse précise, mais peut-être que le principe de l'ImageList correspond à ce principe. Un même ImageList peut être utilisé par toute une série de composants.

    sous FMX il y a une notion de style qui définie aussi une dépendance entre un composant et son style...même si le résultat n'a pas grand chose à avoir avec les CSS.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2017
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2017
    Messages : 43
    Par défaut
    il me semble @POPO a compris ce que je voulais dire (il faut reconnaître que l'exemple dans mon poste initiale, n'était pas vraiment compréhensif au vu de la logique de faire) mais dans un aspect visuel cette fois, je vais être un peu plus claire cette. Ce que je veux décrire c'est exactement ce font les frames. Lorsqu'on crée une frame et qu'on l'a placé dans plusieurs fiches, il suffirait de modifier le(s) élément (s) dans la frame pour qu'il est une répercussion globale, en gros, c'est j'ai label avec un style quelconque, et je veux que les autres labels puisse avoir le même style et s'il m'arrive de changer la couleur du texte que cela se répercute.

    L'approche des frame est assez séduisant mais est ce que ça n'aura pas un coût considérable en terme de performance ? C'est pour cela que je voudrais savoir s'il y a un autre moyen! Et merci a tous pour les réponses !!

  7. #7
    Membre extrêmement actif
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 219
    Par défaut
    Bonjour,

    Ce que tu veux faire c'est un héritage : tu fais une classe (ou mieux un composant) qui hérite du TEDIT classique (par exemple) et qui initialise les propriétés avec les valeurs que tu souhaite par défaut. Tu utilises ce nouveau composant à la place du TEdit standard, et dès lors si tu le modifie c'est toute les instances qui seront modifiées à la recompilation.

    @++
    Dany

  8. #8
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2017
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2017
    Messages : 43
    Par défaut
    Citation Envoyé par skywaukers Voir le message
    Bonjour,

    Ce que tu veux faire c'est un héritage : tu fais une classe (ou mieux un composant) qui hérite du TEDIT classique (par exemple) et qui initialise les propriétés avec les valeurs que tu souhaite par défaut. Tu utilises ce nouveau composant à la place du TEdit standard, et dès lors si tu le modifie c'est toute les instances qui seront modifiées à la recompilation.

    @++
    Dany
    Mais le problème que je trouve à cette approche c'est qu'on le résultat qu'à l'exécution

    Citation Envoyé par Lauper Voir le message
    il me semble @POPO a compris ce que je voulais dire (il faut reconnaître que l'exemple dans mon poste initiale, n'était pas vraiment compréhensif au vu de la logique de faire) mais dans un aspect visuel cette fois, je vais être un peu plus claire cette. Ce que je veux décrire c'est exactement ce font les frames. Lorsqu'on crée une frame et qu'on l'a placé dans plusieurs fiches, il suffirait de modifier le(s) élément (s) dans la frame pour qu'il est une répercussion globale, en gros, c'est j'ai label avec un style quelconque, et je veux que les autres labels puisse avoir le même style et s'il m'arrive de changer la couleur du texte que cela se répercute.

    L'approche des frame est assez séduisant mais est ce que ça n'aura pas un coût considérable en terme de performance ? C'est pour cela que je voudrais savoir s'il y a un autre moyen! Et merci a tous pour les réponses !!
    Est ce que l'approche des frames est à exclure (pour des raison de performances bien sûr)?

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 628
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    Citation Envoyé par Lauper Voir le message
    Il faut reconnaître que l'exemple dans mon post initial, n'était pas vraiment compréhensif au vu de la logique de faire
    Oui, la demande initiale était on ne peut moins claire.

    Ce que je veux décrire c'est exactement ce que font les frames. Lorsqu'on crée une frame et qu'on l'a placé dans plusieurs fiches, il suffirait de modifier le(s) élément (s) dans la frame pour qu'il se répercute globalement
    jusque là Ok
    en gros, c'est j'ai label avec un style quelconque, et je veux que les autres labels puisse avoir le même style et s'il m'arrive de changer la couleur du texte que cela se répercute.
    Si par là on entend dans le frame et que par style on entend les propriétés du Label je suis d'accord. L'avantage : cela se répercute au moment du design. Mais non les autres labels de cette frame auront leurs propres propriétés. Changer la couleur d'un TLabel dans une frame au design ne changera pas la couleur des autres TLabel au sein de cette Frame. C'est là ou la notion de "style" s'arrête.

    L'approche des frames est assez séduisant mais est ce que ça n'aura pas un coût considérable en terme de performance ?
    AMHA non si l'on s'en tient uniquement au design du frame, ce n'est que de l'injection de quelques composants. Avec des gestions d'évènements et des fonctions cela ne devrait pas changer grand-chose, c'est de la réutilisation un peu comme une unité.

    C'est pour cela que je voudrais savoir s'il y a un autre moyen!
    Ce qui se rapproche le plus du CSS reste à mon avis les Styles FMX mais pour cela il faut bien sûr utiliser FMX or il n'est indiqué nulle part ce que vous utilisez (version Delphi, VCL ou FMX).
    - Changer de style s'applique au designtime comme au runtime
    Pour répondre à votre exemple sur les labels, en théorie *, on peut changer la couleur d'un TLabel, définir ce dernier comme "référent" en lui donnant un nom de style (propriété StyleName) et indiqué aux autres labels d'utiliser ce nom de style (propriété StyleLookup) mais cela reste spécifique à une forme. * En théorie car je n'ai jamais testé cette utilisation de stylename

    Dès que l'on parle de Stylebook et, subséquemment, de fichier de style les choses sont un peu plus complexe
    Je n'écrirais pas que les styles FMX sont simples dès que l'on veut les modifier .
    On peut voir une frame sans aucune gestion d'évènements comme un style personnalisé. (cf. mes premiers pas avec les styles, ce que j'ai utilisé pour un élément de liste peut très bien être vu comme une frame)

    Même si l'éditeur de style s'est un peu amélioré je me bats encore avec )

  10. #10
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2017
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2017
    Messages : 43
    Par défaut
    J'utilise FMX et à première vu les styles pourrais faire mon bonheur. Je me penche là dessus

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/05/2010, 20h49
  2. Propriété d'un ensemble de dbedit
    Par youhibadelphi dans le forum Débuter
    Réponses: 0
    Dernier message: 25/07/2009, 22h45
  3. Propriétés cellules Excel et Delphi 6
    Par breizh44 dans le forum Débuter
    Réponses: 2
    Dernier message: 08/06/2009, 11h00
  4. TFileStream et propriété FileName sous Delphi 7
    Par rezuss dans le forum Delphi
    Réponses: 4
    Dernier message: 31/05/2007, 09h14
  5. [Delphi 6] Problème avec la propriété Text d'un composant
    Par bionoir dans le forum Composants VCL
    Réponses: 4
    Dernier message: 08/12/2005, 11h23

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