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 FMX Delphi Discussion :

Style et la meilleure manière de récupérer une couleur par défaut


Sujet :

Composants FMX Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 663
    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 663
    Billets dans le blog
    65
    Par défaut Style et la meilleure manière de récupérer une couleur par défaut
    Bonjour,

    Je reviens à la charge avec les styles FMX, ce qui me chagrine toujours c'est que l'on ne peut pas connaitre les couleurs par défaut des fontes (ou autres)

    Aujourd'hui, je teste une solution pour afficher un message dans une barre de statut, j'y pose donc un TText que j'aligne. Jusque-là pas de souci.
    Maintenant si je détecte, un état quelconque, disons une erreur je veux que mon texte soit affiché en rouge :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if erreur then
      begin
        monMessage.Text:='Erreur détecté';
        monMessage.TextSettings.FontColor:=TAlphaColors.Red;
      end
      else MonMessage.Text:=EmptyStr;
    Maintenant, après une erreur et son traitement, je veux afficher un nouveau message "normal" bien évidemment si rien est fait, ce nouveau message sera de couleur rouge
    il me faut donc trouvé la couleur par défaut
    j'ai bien une solution consistant à créer un composant de même type pour récupérer ainsi la couleur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      with TText.Create(Self) do
         try
         monMessage.TextSettings.FontColor:=TextSettings.FontColor;
         finally
          Free;
         end;
    mais, comment dire, je trouve ça un peu "frustrant" il doit quand même y avoir moyen de trouver dans le style sans passer par une case création de composant !?

  2. #2
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 159
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 159
    Par défaut
    Salut,

    je vais peut-être dire une bêtise car je ne connais pas du tout FMX, mais ça serait du VCL ça devrait pouvoir fonctionner sans création de composant, juste une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var
      SaveColor: TColor;
    begin
      SaveColor := TextSettings.FontColor;
      // tu vis ta vie
      // ...
      // et tu restaures à l'état originel :
      TextSettings.FontColor := SaveColor;
    Non ?

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 663
    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 663
    Billets dans le blog
    65
    Par défaut
    Bonsoir,

    Justement en FMX tout change, si en VCL il est très facile d'obtenir les "couleurs système" ce n'est pas le cas avec FMX tout dépend du style utilisé, D'ailleurs, le code indiqué ne fonctionne pas si un style sombre est appliqué. il faudrait récupérer la couleur d'un TLabel existant et visible

    Moralité : utiliser un TPath n'est peut-être pas une bonne idée dans ce cas de figure, je verrai demain si un TLabel me sortira de ce pas

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 663
    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 663
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    comment dire, je trouve ça un peu "frustrant" il doit quand même y avoir moyen de trouver dans le style sans passer par une case création de composant !?
    Bonjour,

    une piste à contrôler j'étais sur un autre sujet quand j'ai peut-être trouvé le moyen d'accéder à une propriété de style.

    J'avais mis manuellement (c.a.d. en éditant le fichier .style avec NotePad) deux TBrushObjects pour changer des dégradés dans une étude consistant à dessiner des drapeaux
    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
     
    object TStyleContainer
      object TPath
        StyleName = 'DrapeauRectangle'
        Align = Center
        Data.Path = {
          0500000000000000000000000000000001000000000016440000000001000000
          0000164400009643010000000000000000009643030000000000000000000000}
        Fill.Kind = None
        Size.Width = 601.000000000000000000
        Size.Height = 519.000000000000000000
        Size.PlatformDefault = False
        Visible = False
      end
      object TBrushObject
        StyleName = 'fr_fra'
        Brush.Kind = Gradient
        Brush.Gradient.Points = <
          item
            Color = claBlue
            Offset = 0.000000000000000000
          end
          item
            Color = claBlue
            Offset = 0.333333343267440800
          end
          item
            Color = claWhite
            Offset = 0.333333343267440800
          end
          item
            Color = claWhite
            Offset = 0.666666686534881600
          end
          item
            Color = claRed
            Offset = 0.666666686534881600
          end
          item
            Color = claRed
            Offset = 1.000000000000000000
          end>
        Brush.Gradient.StartPosition.Y = 0.500000000000000000
        Brush.Gradient.StopPosition.X = 1.000000000000000000
        Brush.Gradient.StopPosition.Y = 0.500000000000000000
      end
      object TBrushObject
        StyleName = 'be'
        Brush.Kind = Gradient
        Brush.Gradient.Points = <
          item
            Color = claBlack
            Offset = 0.000000000000000000
          end
          item
            Color = claBlack
            Offset = 0.333333343267440800
          end
          item
            Color = claOrange
            Offset = 0.333333343267440800
          end
          item
            Color = claOrange
            Offset = 0.666666686534881600
          end
          item
            Color = claRed
            Offset = 0.666666686534881600
          end
          item
            Color = claRed
            Offset = 1.000000000000000000
          end>
        Brush.Gradient.StartPosition.Y = 0.500000000000000000
        Brush.Gradient.StopPosition.X = 1.000000000000000000
        Brush.Gradient.StopPosition.Y = 0.500000000000000000
      end
    end
    Nom : Capture.PNG
Affichages : 826
Taille : 2,4 Ko
    ce code fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TFormProspective.Button4Click(Sender: TObject);
    var ai : TFMXObject;
    begin
    if RoundRect1.Tag=0 then begin
                               ai:=StyleBook1.CurrentItem.Style.FindStyleResource('be');
                               RoundRect1.Tag:=1;
                             end
                        else begin
                             RoundRect1.Tag:=0;
                             ai:=StyleBook1.CurrentItem.Style.FindStyleResource('fr_fra');
                        end;
    RoundRect1.Fill.Gradient:=TBrushObject(ai).Brush.Gradient;
    end;
    Nom : Capture_1.PNG
Affichages : 804
Taille : 2,1 KoNom : Capture_2.PNG
Affichages : 800
Taille : 2,4 Ko
    La solution serait donc StyleBook1.CurrentItem.Style.FindStyleResource(nom) avec, bien évidemment le bon casting
    cela demande confirmation pour les couleurs et autres mais peut-être que je tiens le bon bout.

    [Edit] j'ai fait des tests sur un buttonstyle et peut extraire les couleurs suivantes
    Normal,Focused,Hot,Pressed,active
    en voilà le principe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var AFmxO : TFmxObject;
        AText : TText;
    begin
    ShowMessage(StyleBook.CurrentItem.DisplayName);
    AFmxO:=StyleBook.CurrentItem.Style.FindStyleResource('buttonstyle');
    if not Assigned(AFMXO) then ShowMessage('not found')
    else begin
      AText:=TText(TLayout(AFmxo).FindStyleResource('text'));
     
      showmessage(AlphaColorToString(AText.TextSettings.FontColorForState.Hot));
    end;
    Si vous vous sentez à tester d'autre élément de style n'hésitez pas à me faire savoir si ça fonctionne.

    Une des questions en suspend étant :"mais si je n'ai pas de stylebook ?"

  5. #5
    Membre émérite
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Par défaut
    Bonjour,

    je dois dire que je ne pratique pas le FMX
    mais je me suis quand même pris au jeu

    et j'ai trouvé une solution qui semble fonctionner avec tous les styles disponibles de base avec 10.2
    je récupère la couleur par défaut après un changement de style et l'applique au TText
    j'ai tenu compte du problème de départ à savoir le changement de couleur du texte rouge/vert/défaut

    je ne sais pas si ça va convenir vu mon niveau en FMX
    mais bon je me lance
    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
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    var
      frm_DefColorMain: Tfrm_DefColorMain;
     
    implementation
     
    {$R *.fmx}
     
    uses System.UIConsts , crFilesUtils;
     
     
    const
      STYLE_PATH = 'C:\Users\Public\Documents\Embarcadero\Studio\19.0\Styles\';
     
     
    type
      // vue qu'on détourne 'TFontColorForState' de l'utilisation normal
      // j'ai redéfini un type 'TFontColorIndex' pour différencier
      // et raccourcir un peu le code ^^
      TFontColorIndex = record
      const
        Default = TFontColorForState.TIndex.Normal;
        Error = TFontColorForState.TIndex.Hot;
        Ok = TFontColorForState.TIndex.Pressed;
      end;
     
    procedure Tfrm_DefColorMain.btn_ApplyClick(Sender: TObject);
    begin
      if ListBox1.ItemIndex <> -1 then
      begin
        if StyleBook1.UseStyleManager then
          StyleBook1.FileName := STYLE_PATH + ListBox1.Items[ListBox1.ItemIndex]
        else
          StyleBook1.LoadFromFile(STYLE_PATH + ListBox1.Items[ListBox1.ItemIndex]);
        TStyleManager.SetStyle(StyleBook1.Style);
        Label2.Text := ListBox1.Items[ListBox1.ItemIndex];
      end;
    end;
     
     
    // c'est ici que je récupère la couleur par défaut du TLabel
    procedure Tfrm_DefColorMain.Label1ApplyStyleLookup(Sender: TObject);
    var
      aTextObject: TText;
    begin
      if Sender is TLabel then
        if TLabel(Sender).FindStyleResource<TText>('text', aTextObject) then
        begin
          // on prend toutes les caractéristiques en une fois
          txt_Status.TextSettings.Assign(aTextObject.TextSettings);
          with txt_Status.TextSettings do
          begin
              // au passage on peut changer la font du TLabel
            //aTextObject.Font.Family := 'Comic Sans MS';
              // ou que celle qui nous interesse
            //FontColor := aTextObject.TextSettings.FontColor;
              // et on se sert de 'FontColorForState' (non utilisé pour un TText) pour stocker
              // les couleurs qui nous interesse
            FontColorForState.Color[TFontColorIndex.Default] := FontColor;
            FontColorForState.Color[TFontColorIndex.Error] := TAlphaColors.Red;
            FontColorForState.Color[TFontColorIndex.Ok] := TAlphaColors.Green;
          end;
        end;
        RadioButton1Change(nil);
        Label2.Text := ExtractFileName(StyleBook1.FileName);
    end;
     
    procedure Tfrm_DefColorMain.ListBox1DblClick(Sender: TObject);
    begin
      if ListBox1.ItemIndex <> -1 then
      begin
        if StyleBook1.UseStyleManager then
          StyleBook1.FileName := STYLE_PATH + ListBox1.Items[ListBox1.ItemIndex]
        else
          StyleBook1.LoadFromFile(STYLE_PATH + ListBox1.Items[ListBox1.ItemIndex]);
        TStyleManager.SetStyle(StyleBook1.Style);
      end;
    end;
     
    procedure Tfrm_DefColorMain.RadioButton1Change(Sender: TObject);
    var
      I: Integer;
      aComp: TRadioButton;
    begin
      if not (Sender is TRadioButton) then
      for I := 1 to 3 do
      begin
        aComp := TRadioButton(FindComponent('RadioButton'+I.ToString));
        if aComp.IsChecked then
        begin
          Sender := aComp;
          Break
        end;
      end;
     
      // simulation d'un message avec couleur en fonction de l'importance
      if TRadioButton(Sender).IsChecked then
        case TRadioButton(Sender).Tag of
          0: begin
               txt_Status.Text := 'Un message en couleur par défaut';
               with txt_Status.TextSettings do
                 FontColor := FontColorForState.CurrentColor[TFontColorIndex.Default];
             end;
          1: begin
               txt_Status.Text := 'Un message d''erreur en Rouge';
               with txt_Status.TextSettings do
                 FontColor := FontColorForState.CurrentColor[TFontColorIndex.Error];
             end;
     
          2: begin
               txt_Status.Text := 'Un message de réussite en Vert';
               with txt_Status.TextSettings do
                 FontColor := FontColorForState.CurrentColor[TFontColorIndex.Ok];
             end;
        end;
    end;
     
     
     
    procedure Tfrm_DefColorMain.btn_UpdateFlagClick(Sender: TObject);
    var ai : TFMXObject;
    begin
      // en cas de changement de Style
      // on vérifie la présence de 'DrapeauRectangle'
      if Assigned(StyleBook1.CurrentItem.Style.FindStyleResource('DrapeauRectangle')) then
      begin
        if RoundRect1.Tag = 0 then
        begin
          ai := StyleBook1.CurrentItem.Style.FindStyleResource('be');
          RoundRect1.Tag := 1;
        end
        else
        begin
          RoundRect1.Tag := 0;
          ai := StyleBook1.CurrentItem.Style.FindStyleResource('fr_fra');
        end;
        RoundRect1.Fill.Gradient := TBrushObject(ai).Brush.Gradient;
      end;
    end;
     
    procedure Tfrm_DefColorMain.FormCreate(Sender: TObject);
    begin
      {procedure FindFiles(Directory: string; FilesMask: string; aList: TStrings; const
        SubFolders: Boolean = True; const FullPath: Boolean = True);}
      // FindFiles et une simple procédure qui retourne une liste (TStrings)
      // de noms de fichiers correspondant au chemin de recherche (STYLE_PATH)
      // et au mask de recherche '*.style'
      crFilesUtils.FindFiles(STYLE_PATH, '*.style', ListBox1.Items, False, False);
      RadioButton1.Tag := Ord(TFontColorIndex.Default);
      RadioButton2.Tag := Ord(TFontColorIndex.Error);
      RadioButton3.Tag := Ord(TFontColorIndex.Ok);
     
      RoundRect1.Fill.Kind := TBrushKind.Gradient;
    end;
     
    end.
    si tu as besoin de plus, les sources aux complet ou autre, n'hésites pas

    Cordialement,

    @+

    ps: ah oui ... j'ai réussi, non sans mal, à intégrer les deux styles pour les drapeaux
    donc: où les as-tu placés dans le Style ?
    et aussi ceci pour qu'enfin le résultat soit bon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      RoundRect1.Fill.Kind := TBrushKind.Gradient;

  6. #6
    Membre émérite
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Par défaut
    re,

    ... ce code semble également donner de bons résultats:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure Tfrm_DefColorMain.GetDefaultColor;
    var
      aFMXObj : TFMXObject;
    begin
      aFMXObj := StyleBook1.Style.FindStyleResource('labelstyle');
      if Assigned(aFMXObj) then
        aFMXObj := TLayout(aFMXObj).FindStyleResource('Text');
      if Assigned(aFMXObj) then
        Text1.TextSettings.FontColor := TText(aFMXObj).TextSettings.FontColor;
    end;
    [EDIT]
    en me basant sur le code ci-dessus j'ai modifié la procédure qui dessine les drapeaux:
    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
    procedure Tfrm_DefColorMain.btn_UpdateFlagClick(Sender: TObject);
    var aFMXObj : TFMXObject;
    begin
      // en cas de changement de Style
      // on vérifie la présence de 'DrapeauRectangle'
      aFMXObj := StyleBook1.CurrentItem.Style.FindStyleResource('DrapeauRectangle');
      if Assigned(aFMXObj) then
      begin
        if RoundRect1.Tag = 0 then
        begin
          aFMXObj := TStyleContainer(aFMXObj.Parent).FindStyleResource('be');
          RoundRect1.Tag := 1;
        end
        else
        begin
          RoundRect1.Tag := 0;
          aFMXObj := TStyleContainer(aFMXObj.Parent).FindStyleResource('fr_fra');
        end;
        RoundRect1.Fill.Gradient := TBrushObject(aFMXObj).Brush.Gradient;
      end;
    end;
    Cordialement,

    @+

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 663
    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 663
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Comme tu as pu le montrer il y a certes plusieurs manières de coder la chose. Je ne m'étais pas inquiété de tester chaque style proposé (il y en a trop), à mon avis la méthode pour l'un pouvant servir pour les autres (ce que tu as démontré). Le seul hic reste : "Quand il n'y a pas de style (le style par défaut dans mon cas "windows 10") ?
    L'approche par le StyleContainer ça je n'y avais pas songé !

    Pour en revenir à l'histoire des drapeaux (ou plutôt le dégradé) c'est le déclencheur non pas la finalité d'ailleurs cette même chose a été déclenchée par autre chose (utilisation de FMX.Object.TPath et style) suite de mon programme proposé en source et de constations
    1. TPath est moins gourmand en octets que multiresbitmap tout en réglant les problèmes de dpi des écrans
    2. TPath est malheureusement "mono texture" mais dans le cas de drapeaux "simples" un dégradé peut suffire
    3. Pour reprendre l'exemple des drapeaux en jouant avec les styles, on peut obtenir une sorte d'équivalent à un TImageList (beaucoup moins gourmand en octets)

    Pourquoi tous ces essais (prenants au demeurant) ? En premier lieu par grosse curiosité intellectuelle, en second lieu c'est venu de fil en aiguille je voulais améliorer ma routine de chargement d'un fichier SVG et me suis dit que les drapeaux feraient un bon exemple.

    Mais bref, je déborde de la question de départ d'il y a un mois. C'était une question récurrente dans beaucoup de mes essais à chaque fois que je voulais modifier une couleur de fond (pour un bouton, un entête etc..) j'étais frustré par le choix (manuel) de la couleur du texte, il devait y avoir un moyen d'obtenir les couleurs prédéfinies (en VCL c'est facile avec les couleurs système clWindowsText etc.. en FMX celles-ci n'existent pas).
    Avec cette "technique" on pourrait, je pense, pouvoir créer un ensemble de couleurs "système" (quelque soit l'OS) en fonction du style chargé (pour peu de pouvoir répondre à la question style par défaut)


    [Edit] Cela dit je me plante peut-être, à l'instant, je viens de voir dans l'unité system.uiconsts toute la liste des couleurs que je tente de retrouver
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    // lignes 309 à 340
        (Value: TColors.SysActiveBorder; Name: 'clActiveBorder'),
        (Value: TColors.SysActiveCaption; Name: 'clActiveCaption'),
    ...
        (Value: TColors.SysWindowFrame; Name: 'clWindowFrame'),
        (Value: TColors.SysWindowText; Name: 'clWindowText'));
    reste à savoir si cela correspond au style appliqué

  8. #8
    Membre émérite
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    ...

    [Edit] Cela dit je me plante peut-être, à l'instant, je viens de voir dans l'unité system.uiconsts toute la liste des couleurs que je tente de retrouver
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    // lignes 309 à 340
        (Value: TColors.SysActiveBorder; Name: 'clActiveBorder'),
        (Value: TColors.SysActiveCaption; Name: 'clActiveCaption'),
    ...
        (Value: TColors.SysWindowFrame; Name: 'clWindowFrame'),
        (Value: TColors.SysWindowText; Name: 'clWindowText'));
    reste à savoir si cela correspond au style appliqué
    je dirais que non vu ceci:Nom : DelphiColorMap.jpg
Affichages : 839
Taille : 442,1 Ko
    trouvé respectivement dans les sources de D2009 & D10.2.3

    Sinon as tu regardé le premier code du premier message qui "règle" le problème de couleur d'un message (Rouge ou couleur par défaut)
    le reste, les TPath et autres joyeusetés et finesses du FMX me dépasse et de beaucoup !
    j'ai toujours pas osé sauter le pas

    un jour peut être ... quand je serais grand


    ps: la procedure "GetDefaultColor" se passe totalement de la présence d'un TLabel sur la fiche.
    d'ailleurs il serait préférable d'en faire une fonction qui renvoie un TAlphaColor.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function Tfrm_DefColorMain.GetDefaultTextColor: TAlphaColor;
    var
      aFMXObj : TFMXObject;
    begin
      Result := claBlack;
      aFMXObj := StyleBook1.Style.FindStyleResource('labelstyle');
      if Assigned(aFMXObj) then
        aFMXObj := TLayout(aFMXObj).FindStyleResource('Text');
      if Assigned(aFMXObj) then
        Result := TText(aFMXObj).TextSettings.FontColor;
    end;
    Cordialement,
    @+

Discussions similaires

  1. Récupérer les couleurs par défaut pour légende
    Par Pikouse dans le forum JavaFX
    Réponses: 0
    Dernier message: 10/09/2014, 16h32
  2. Meilleure manière de partager une fonction
    Par TomTom2000 dans le forum Débuter
    Réponses: 7
    Dernier message: 17/09/2009, 10h52
  3. Quelle est la meilleure manière de créer une url à partir du GET
    Par oliviercuyp dans le forum Zend Framework
    Réponses: 7
    Dernier message: 25/11/2008, 11h58
  4. Réponses: 2
    Dernier message: 07/10/2007, 06h40
  5. Réponses: 2
    Dernier message: 19/03/2007, 16h41

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