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 :

Grouper des composants pour éditer les propriétés


Sujet :

Delphi

  1. #1
    Membre habitué
    Inscrit en
    Juin 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 207
    Points : 161
    Points
    161
    Par défaut Grouper des composants pour éditer les propriétés
    Bonjour,

    J'ai une fiche composées d'une centaines de TLabels.

    Certains représentent des titres, d'autres servent à afficher des données etc...

    Je voudrais modifier, lors de l'exécution certaines propriétés en fonctions de leur appartenance, c'est à dire, par exemple, mettre en gras tous les labels des titres, mais pas ceux pour les données.

    La première solution qui apparait à mes yeux, c'est d'y aller à la bourin: un fonction du nom du composant, appliquer un style.

    J'aimerais savoir s'il n'y a pas une méthode plus élégante et surtout plus rapide au niveau codage, du style regrouper les composants dans des groupes afin d'appliquer les modifications sur le groupe et pas sur chaque élément de manière individuelle.

    Merci

  2. #2
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Tu peux les mettre en "groupes" dans des tableaux, et parcourir ceux-ci. À part ça je ne vois pas de solution.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  3. #3
    Membre habitué
    Inscrit en
    Juin 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 207
    Points : 161
    Points
    161
    Par défaut
    Les grouper dans un tableau?

    Heuu, je veux bien, mais je ne suis pas sur de comprendre comment faire.

    Les composants sont créés en édition, pas dynamiquement! Après, si passer par dees tableaxu résoud mon problème, tant mieux, c'est qu'au moins une solution existe!

    Tu pourrais me donner un petit exemple, disons avec 3 TLabels, 2 dans un groupe, le dernier dans un autre groupe?

    Merci!

  4. #4
    Membre habitué
    Inscrit en
    Août 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Août 2002
    Messages : 144
    Points : 157
    Points
    157
    Par défaut
    Bonjour, personnellement, j'utilise les tags, plus une fonction d'application de style automatique.

    Par exemple, tu te dire que les titres ont le tag=0, et les donnes le tag=1.

    Ensuite, a l'ouverture de ta fiche, tu parcours avec la fonction tous les elements de ta fiche... Avantage de cette fonction, c'est que tu peux paramètrer d'autres propriété suivant sont tag. Aujourd'hui, tu veux que tous les composants tag=0 soient couleur noire et gras, si demain tu veux qu'il rose et italique tu n'a qu'a changer l'implementation de ta fonction.

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
     
    type
      TForm1 = class(TForm)
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        Label4: TLabel;
        Label5: TLabel;
        Label6: TLabel;
        Label7: TLabel;
        Label8: TLabel;
        Label9: TLabel;
        Label10: TLabel;
        Label11: TLabel;
        Label12: TLabel;
        Label13: TLabel;
        Label14: TLabel;
        Label15: TLabel;
        Label16: TLabel;
        Label17: TLabel;
        Label18: TLabel;
        Label19: TLabel;
        Label20: TLabel;
        Label21: TLabel;
        Label22: TLabel;
        Label23: TLabel;
        Label24: TLabel;
        Label25: TLabel;
        Label26: TLabel;
        Label27: TLabel;
        Label28: TLabel;
        Label29: TLabel;
        Label30: TLabel;
        Label31: TLabel;
        Label32: TLabel;
        Label33: TLabel;
        Label34: TLabel;
        Label35: TLabel;
        Label36: TLabel;
        Label37: TLabel;
        Label38: TLabel;
        Label39: TLabel;
        Label40: TLabel;
        Label41: TLabel;
        Label42: TLabel;
        Label43: TLabel;
        Label44: TLabel;
        Label45: TLabel;
        Label46: TLabel;
        Label47: TLabel;
        Label48: TLabel;
        Button: TButton;
        ComboBox: TComboBox;
        procedure ButtonClick(Sender: TObject);
      private
        { Déclarations privées }
        procedure ApplyStyle;
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.ApplyStyle;
    var
      i:integer;
    begin
      For i:=0 to ControlCount - 1 do
        if Controls[i] is tlabel then
        begin
          Case tLabel(Controls[i]).Tag of
            //Titre
            0: tLabel(Controls[i]).Font.Style := tLabel(Controls[i]).Font.Style - [fsBold];
            //Données
            1: tLabel(Controls[i]).Font.Style := tLabel(Controls[i]).Font.Style + [fsBold];
          end;
        end;
    end;
     
    procedure TForm1.ButtonClick(Sender: TObject);
    begin
      ApplyStyle;
    end;
     
    end.

  5. #5
    Membre habitué
    Inscrit en
    Juin 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 207
    Points : 161
    Points
    161
    Par défaut
    Génial, c'est exactement ce qu'il me faut!

    Merci 1000 fois! (j'avais oublié que les TLabels disposaient d'un tag)

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

Discussions similaires

  1. Composant pour éditer des options
    Par Patrick Seuret dans le forum C++Builder
    Réponses: 1
    Dernier message: 13/09/2006, 13h57
  2. [IDE] - Où trouver des composants pour Visual C# 2005 Express ?
    Par MaTHieU_ dans le forum Visual Studio
    Réponses: 4
    Dernier message: 22/04/2006, 21h50
  3. Composant pour limiter les décimales à deux
    Par Droïde Système7 dans le forum Composants VCL
    Réponses: 9
    Dernier message: 20/08/2005, 12h00
  4. existe t 'il des programme pour transformer les bases
    Par creazone dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 05/10/2004, 14h11
  5. [Kylix] Trouver des composants pour Kylix 3
    Par busy999 dans le forum EDI
    Réponses: 2
    Dernier message: 17/02/2003, 14h01

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