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 :

Changer la couleur de la barre d'un ProgressBar


Sujet :

Delphi

  1. #1
    Invité
    Invité(e)
    Par défaut Changer la couleur de la barre d'un ProgressBar
    Bonjour,

    sous FMX, je cherche à changer la couleur de la barre d'une jauge. Avec les styles, j'arrive à le faire d'une manière statique mais cela ne me convient pas car je ne sais pas comment relier les styles à un événement, enfin ici la valeur d'un boolean.

    Sous Windows, si bStop ou bPanne alors la barre devient rouge... sinon elle est verte.

    En Lazarus et Qt : 10 secondes. En FMX, je cherche la solution depuis 3 heures !

    Une proposition pour faire une chose "aussi simple" ?
    Merci. Cordialement. Gilles
    Dernière modification par Invité ; 19/01/2019 à 00h14.

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    bon, évidemment il y a la solution style personnalisé pour peu de rajouter des rectangles auxquels on pourrait accéder (j'ai horreur de ce type de style faisant appel à des styleobjects et donc à une zone d'une image)
    pour accéder à la couleur du rectangle, il faut tout d'abord donner un stylename au rectangle
    Nom : Capture.PNG
Affichages : 1282
Taille : 10,5 Ko
    y accéder ensuite est assez simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TRectangle(ProgressBar.FindStyleResource('FillColor')).Fill.Color:=TalphaColors.Aquamarine;


    mais il y a aussi l'événement onPaint ou onPainting peut être plus facile à maitriser et surtout n'impliquant pas les styles
    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
     
    procedure TForm7.ProgressBarPaint(Sender: TObject; Canvas: TCanvas;
      const ARect: TRectF);
    var PRect : TRectF;
    begin
     with Canvas do
      begin
        Prect:=ARect;
        PRect.Width:=ARect.Width*ProgressBar.value/ProgressBar.Max;
        if (Valeur=bStop) or (Valeur=bPanne) then  // comme tu n'as pas indiqué exactement le nom de la variable et certainement l'énumération j'improvise 
          begin
           Canvas.Fill.Color:=Talphacolors.Red;
          Canvas.FillRect(PRect,0,0,[],1);
         end;  // dans le cas contraire prend la valeur du style 
      end;
    pour tester j'ai fait une simple boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm7.ButtontestClick(Sender: TObject);
    var
      I: Integer; 
    begin
    for I := 0 to 100 do  // (notez que je n'arrive pas à me faire aux nouveautés des variables)
      begin
        Sleep(100);
        ProgressBar.Value:= ProgressBar.Value+ 1.0; // ou ProgressBar.Value:=i; 
        application.processmessages;  // doute de portabilité
      end;
    end;
    je ne voyais pas la progression sauf bien sûr à ajouter un application.processmessages ce qui me fait tiquer un peu
    Remarque : Depuis RAD Studio 10.2 Tokyo Release 2, l'utilisation de la procédure ProcessMessages pour retenir l'exécution du thread principal dans un cycle dans le cadre d'un développement pour Android peut provoquer le blocage de l'application.
    J'ai alors lu (ou plutôt visionné) ceci: tip de graig chapman suggérant de passer par une task ou un thread. d'un autre côté comme cela dépasse le cadre de la question, je pense que je vais en rester là

    Serge

    PS. pourrait faire l'objet d'une FAQ ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Merci Serge. Je retiens uniquement la première approche. L'autre pourrait me convenir mais doit être améliorée (il faut laisser les bords gris intacts) mais surtout c'est une solution VCL/Lazarus, digne certes, mais pas réellement FMX... Or dans mon comparatif, je veux utiliser des approches natives du produit si possible sans solution de contournement... Et pour l'instant, FireMonkey est au coude à coude (voire mieux ) avec Qt.

    Bref voici le code utilisé :
    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
    unit Unit1;
     
    interface
     
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes,
      System.Variants,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
      FMX.Controls.Presentation, FMX.StdCtrls,
     
      {added}
      FMX.Objects, FMX.Styles.Objects;
     
    type
      TForm1 = class(TForm)
        ProgressBar1: TProgressBar;
        StyleBook1: TStyleBook;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        procedure SetProgressbarColor(aProgressBar: TProgressBar;
          aColor: TAlphaColor);
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.fmx}
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
    begin
      SetProgressbarColor(ProgressBar1, TAlphaColors.Red);
      with ProgressBar1 do
      begin
        Min := 0;
        Max := 10000;
        Value := 0;
     
        for i := 0 to 10000 do
          Value := i;
      end;
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     
    end;
     
    procedure TForm1.SetProgressbarColor(aProgressBar: TProgressBar;
      aColor: TAlphaColor);
    var
      T: TFmxObject;
    begin
      if aProgressBar = nil then
        Exit;
      T := aProgressBar.FindStyleResource('FillColorBar');
      if (T <> nil) and (T is TRectangle) then
      begin
        // TRectangle(T).Margins.Left := 1;
        // TRectangle(T).Margins.Top := 1;
        // TRectangle(T).Margins.Right := 1;
        // TRectangle(T).Margins.Bottom := 1;
        // TRectangle(T).Stroke.Kind := TBrushKind.None;
        // TRectangle(T).Stroke.Thickness := 0;
        if TRectangle(T).Fill <> nil then
          TRectangle(T).Fill.Color := aColor;
      end;
      aProgressBar.Repaint;
    end;
     
    end.
    et le Unit1.fmx :
    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
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    object Form1: TForm1
      Left = 0
      Top = 0
      Caption = 'Form1'
      ClientHeight = 480
      ClientWidth = 640
      StyleBook = StyleBook1
      FormFactor.Width = 320
      FormFactor.Height = 480
      FormFactor.Devices = [Desktop]
      DesignerMasterStyle = 0
      object ProgressBar1: TProgressBar
        Orientation = Horizontal
        Position.X = 352.000000000000000000
        Position.Y = 136.000000000000000000
        Size.Width = 273.000000000000000000
        Size.Height = 20.000000000000000000
        Size.PlatformDefault = False
      end
      object Button1: TButton
        Position.X = 352.000000000000000000
        Position.Y = 104.000000000000000000
        TabOrder = 2
        Text = 'Button1'
        OnClick = Button1Click
      end
      object StyleBook1: TStyleBook
        Styles = <
          item
          end
          item
            Platform = 'Windows 10 Desktop'
            ResourcesBin = {
              464D585F5354594C4520322E3501061050726F67726573734261727374796C65
              030410005450463007544C61796F757400095374796C654E616D65061050726F
              67726573734261727374796C6505416C69676E070643656E7465720A53697A65
              2E576964746805000000000000808807400B53697A652E486569676874050000
              0000000000A003401453697A652E506C6174666F726D44656661756C74080854
              61624F726465720200000C545374796C654F626A65637400095374796C654E61
              6D65060668747261636B05416C69676E0708436F6E74656E74730C536F757263
              654C6F6F6B7570061B57696E646F7773203130204465736B746F707374796C65
              2E706E670A53697A652E576964746805000000000000808807400B53697A652E
              4865696768740500000000000000A003401453697A652E506C6174666F726D44
              656661756C74080A536F757263654C696E6B0E010E436170496E736574732E4C
              6566740500000000000000C001400D436170496E736574732E546F7005000000
              00000000C001400F436170496E736574732E52696768740500000000000000C0
              014010436170496E736574732E426F74746F6D0500000000000000C001400F53
              6F75726365526563742E4C65667405000000000000009506400E536F75726365
              526563742E546F7005000000000000009E074010536F75726365526563742E52
              696768740500000000000000D2064011536F75726365526563742E426F74746F
              6D0500000000000000AC074000010E436170496E736574732E4C656674050000
              00000000009002400D436170496E736574732E546F7005000000000000009002
              400F436170496E736574732E5269676874050000000000000090024010436170
              496E736574732E426F74746F6D0500000000000000900240055363616C650500
              000000000000C0FF3F0F536F75726365526563742E4C65667405000000000000
              00DF06400E536F75726365526563742E546F700500000000000000ED07401053
              6F75726365526563742E526967687405000000000000809D074011536F757263
              65526563742E426F74746F6D050000000000000081084000010E436170496E73
              6574732E4C6566740500000000000000C002400D436170496E736574732E546F
              700500000000000000C002400F436170496E736574732E526967687405000000
              00000000C0024010436170496E736574732E426F74746F6D0500000000000000
              C00240055363616C6505000000000000008000400F536F75726365526563742E
              4C65667405000000000000009507400E536F75726365526563742E546F700500
              0000000000009E084010536F75726365526563742E5269676874050000000000
              0000D2074011536F75726365526563742E426F74746F6D0500000000000000AC
              08400000064F706171756509000C545374796C654F626A65637400095374796C
              654E616D65060A68696E64696361746F7205416C69676E07044C656674064C6F
              636B6564090C4D617267696E732E4C656674050000000000000080FF3F0B4D61
              7267696E732E546F70050000000000000080FF3F0D4D617267696E732E526967
              6874050000000000000080FF3F0E4D617267696E732E426F74746F6D05000000
              0000000080FF3F0C536F757263654C6F6F6B7570061B57696E646F7773203130
              204465736B746F707374796C652E706E670A506F736974696F6E2E5805000000
              0000000080FF3F0A506F736974696F6E2E59050000000000000080FF3F0A5369
              7A652E57696474680500000000000000C804400B53697A652E48656967687405
              000000000000009003401453697A652E506C6174666F726D44656661756C7408
              0A536F757263654C696E6B0E010E436170496E736574732E4C65667405000000
              00000000E001400D436170496E736574732E546F700500000000000000A00140
              0F436170496E736574732E52696768740500000000000000E001401043617049
              6E736574732E426F74746F6D0500000000000000A001400F536F757263655265
              63742E4C65667405000000000000009506400E536F75726365526563742E546F
              7005000000000000808D074010536F75726365526563742E5269676874050000
              0000000000D3064011536F75726365526563742E426F74746F6D050000000000
              00809A074000010E436170496E736574732E4C6566740500000000000000A002
              400D436170496E736574732E546F7005000000000000008002400F436170496E
              736574732E52696768740500000000000000A0024010436170496E736574732E
              426F74746F6D0500000000000000800240055363616C650500000000000000C0
              FF3F0F536F75726365526563742E4C6566740500000000000000DF06400E536F
              75726365526563742E546F700500000000000000D4074010536F757263655265
              63742E526967687405000000000000009E074011536F75726365526563742E42
              6F74746F6D0500000000000080E7074000010E436170496E736574732E4C6566
              740500000000000000E002400D436170496E736574732E546F70050000000000
              0000A002400F436170496E736574732E52696768740500000000000000E00240
              10436170496E736574732E426F74746F6D0500000000000000A0024005536361
              6C6505000000000000008000400F536F75726365526563742E4C656674050000
              00000000009507400E536F75726365526563742E546F7005000000000000808D
              084010536F75726365526563742E52696768740500000000000000D307401153
              6F75726365526563742E426F74746F6D05000000000000809A08400000064F70
              6171756509000A5452656374616E676C6500095374796C654E616D65060C4669
              6C6C436F6C6F7242617205416C69676E0706436C69656E740A46696C6C2E436F
              6C6F720707636C614E756C6C0A53697A652E57696474680500000000000000C8
              04400B53697A652E48656967687405000000000000009003401453697A652E50
              6C6174666F726D44656661756C74080C5374726F6B652E436F6C6F720709636C
              6153696C766572105374726F6B652E546869636B6E6573730500000000000000
              000000000000000C545374796C654F626A65637400095374796C654E616D6506
              0676747261636B05416C69676E0708436F6E74656E74730C536F757263654C6F
              6F6B7570061B57696E646F7773203130204465736B746F707374796C652E706E
              670A53697A652E576964746805000000000000808807400B53697A652E486569
              6768740500000000000000A003401453697A652E506C6174666F726D44656661
              756C74080A536F757263654C696E6B0E010E436170496E736574732E4C656674
              0500000000000000E001400D436170496E736574732E546F7005000000000000
              00E001400F436170496E736574732E52696768740500000000000000E0014010
              436170496E736574732E426F74746F6D0500000000000000E001400F536F7572
              6365526563742E4C6566740500000000000000D906400E536F75726365526563
              742E546F7005000000000000808D074010536F75726365526563742E52696768
              740500000000000000F5064011536F75726365526563742E426F74746F6D0500
              000000000000AC074000010E436170496E736574732E4C656674050000000000
              0000A002400D436170496E736574732E546F700500000000000000A002400F43
              6170496E736574732E52696768740500000000000000A0024010436170496E73
              6574732E426F74746F6D0500000000000000A00240055363616C650500000000
              000000C0FF3F0F536F75726365526563742E4C6566740500000000000080A207
              400E536F75726365526563742E546F700500000000000000D4074010536F7572
              6365526563742E52696768740500000000000080B7074011536F757263655265
              63742E426F74746F6D050000000000000081084000010E436170496E73657473
              2E4C6566740500000000000000E002400D436170496E736574732E546F700500
              000000000000E002400F436170496E736574732E526967687405000000000000
              00E0024010436170496E736574732E426F74746F6D0500000000000000E00240
              055363616C6505000000000000008000400F536F75726365526563742E4C6566
              740500000000000000D907400E536F75726365526563742E546F700500000000
              0000808D084010536F75726365526563742E52696768740500000000000000F5
              074011536F75726365526563742E426F74746F6D0500000000000000AC084000
              00064F706171756509000C545374796C654F626A65637400095374796C654E61
              6D65060A76696E64696361746F7205416C69676E0706426F74746F6D064C6F63
              6B6564090C4D617267696E732E4C656674050000000000000080FF3F0B4D6172
              67696E732E546F70050000000000000080FF3F0D4D617267696E732E52696768
              74050000000000000080FF3F0E4D617267696E732E426F74746F6D0500000000
              00000080FF3F0C536F757263654C6F6F6B7570061B57696E646F777320313020
              4465736B746F707374796C652E706E670A506F736974696F6E2E580500000000
              00000080FF3F0A506F736974696F6E2E590500000000000000F803C00A53697A
              652E576964746805000000000000808707400B53697A652E4865696768740500
              000000000000C804401453697A652E506C6174666F726D44656661756C74080A
              536F757263654C696E6B0E010E436170496E736574732E4C6566740500000000
              000000A001400D436170496E736574732E546F700500000000000000E001400F
              436170496E736574732E52696768740500000000000000A0014010436170496E
              736574732E426F74746F6D0500000000000000E001400F536F75726365526563
              742E4C6566740500000000000000FC06400E536F75726365526563742E546F70
              05000000000000008D074010536F75726365526563742E526967687405000000
              000000008B074011536F75726365526563742E426F74746F6D05000000000000
              00AC074000010E436170496E736574732E4C6566740500000000000000800240
              0D436170496E736574732E546F700500000000000000A002400F436170496E73
              6574732E5269676874050000000000000080024010436170496E736574732E42
              6F74746F6D0500000000000000A00240055363616C650500000000000000C0FF
              3F0F536F75726365526563742E4C6566740500000000000000BD07400E536F75
              726365526563742E546F700500000000000080D3074010536F75726365526563
              742E52696768740500000000000080D0074011536F75726365526563742E426F
              74746F6D050000000000000081084000010E436170496E736574732E4C656674
              0500000000000000A002400D436170496E736574732E546F7005000000000000
              00E002400F436170496E736574732E52696768740500000000000000A0024010
              436170496E736574732E426F74746F6D0500000000000000E00240055363616C
              6505000000000000008000400F536F75726365526563742E4C65667405000000
              00000000FC07400E536F75726365526563742E546F7005000000000000008D08
              4010536F75726365526563742E526967687405000000000000008B084011536F
              75726365526563742E426F74746F6D0500000000000000AC08400000064F7061
              7175650900000000}
          end>
        Left = 16
        Top = 8
      end
    end
    Maintenant questions complémentaires :
    • Est-il possible d'avoir un code tous OS ? (dans le .fmx)
    • Si tel n'est pas le cas, comment crée-t-on le style FMXLinux (ici Ubuntu-16.04) ?



    Merci. Gilles.

  4. #4
    Invité
    Invité(e)
    Par défaut Améliorations...
    Pour utiliser le code avec FMXLinux, je suis assez perplexe car je n'arrive pas dans le StyleBook à définir la "PlatForm"... Linux, Linux64, Linux 64-bit, rien n'y fait >> Err. pas de ressources

    J'ai donc modifié le Unit.fmx en ce qui concerne le Styles.Item. J'ai coupé le contenu de l'item correspondant à la 'Platform' Windows 10 desktop', l'ai copié dans le premier item (vide) sans préciser de 'PlatForm' en supposant que cela le rendrait générique, puis j'ai supprimé l'item 'Platform Windows 10 desktop'. Effectivement cela fonctionne mais en Linux je ne dispose pas de la couleur par défaut (verte sous Win 10). J'ai corrigé un petit peu le code de l'Unit1 pour le rendre fonctionnel sous Linux.

    Unit1.pas :
    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
    unit Unit1;
     
    interface
     
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes,
      System.Variants,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
      FMX.Controls.Presentation, FMX.StdCtrls,
     
      {added}
      FMX.Objects, FMX.Styles.Objects;
     
    type
      TForm1 = class(TForm)
        StyleBook1: TStyleBook;
        Button1: TButton;
        ProgressBar1: TProgressBar;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
        procedure SetProgressbarColor(aProgressBar: TProgressBar;
          aColor: TAlphaColor);
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.fmx}
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
    begin
     
      with ProgressBar1 do
      begin
        Min := 0;
        Max := 10000;
        Value := 0;
        SetProgressbarColor(ProgressBar1, TAlphaColors.Null);
        for i := 0 to 5000 do
          Value := i;
        showmessage('');
     
        SetProgressbarColor(ProgressBar1, TAlphaColors.Red);
        for i := 5001 to 10000 do
          Value := i;
      end;
    end;
     
    procedure TForm1.SetProgressbarColor(aProgressBar: TProgressBar;
      aColor: TAlphaColor);
    var
      T: TFmxObject;
      NativeColor: TAlphaColor;
    begin
    {$IFDEF LINUX}
      NativeColor := TAlphaColors.Coral;
    {$ELSE}
      NativeColor := TAlphaColors.Null;
    {$ENDIF}
      if aProgressBar = nil then
        Exit;
      T := aProgressBar.FindStyleResource('FillColorBar');
      if (T <> nil) and (T is TRectangle) then
      begin
        if TRectangle(T).Fill <> nil then
        begin
          if aColor <> TAlphaColors.Null then
            TRectangle(T).Fill.Color := aColor
          else
            TRectangle(T).Fill.Color := NativeColor;
        end;
      end;
      aProgressBar.Repaint;
    end;
     
    end.
    Unit1.fmx :
    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
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    object Form1: TForm1
      Left = 0
      Top = 0
      Caption = 'Form1'
      ClientHeight = 162
      ClientWidth = 367
      StyleBook = StyleBook1
      FormFactor.Width = 320
      FormFactor.Height = 480
      FormFactor.Devices = [Desktop]
      DesignerMasterStyle = 0
      object ProgressBar1: TProgressBar
        Orientation = Horizontal
        Position.X = 24.000000000000000000
        Position.Y = 96.000000000000000000
        Size.Width = 273.000000000000000000
        Size.Height = 20.000000000000000000
        Size.PlatformDefault = False
      end
      object Button1: TButton
        Position.X = 24.000000000000000000
        Position.Y = 64.000000000000000000
        StyleLookup = 'Button1Style1'
        TabOrder = 2
        Text = 'Button1'
        OnClick = Button1Click
      end
      object StyleBook1: TStyleBook
        Styles = <
          item
            ResourcesBin = {
              464D585F5354594C4520322E3501061050726F67726573734261727374796C65
              03D210005450463007544C61796F757400095374796C654E616D65061050726F
              67726573734261727374796C6505416C69676E070643656E7465720A53697A65
              2E576964746805000000000000808807400B53697A652E486569676874050000
              0000000000A003401453697A652E506C6174666F726D44656661756C74080854
              61624F726465720200000C545374796C654F626A65637400095374796C654E61
              6D65060668747261636B05416C69676E0708436F6E74656E74730C536F757263
              654C6F6F6B7570061B57696E646F7773203130204465736B746F707374796C65
              2E706E670A53697A652E576964746805000000000000808807400B53697A652E
              4865696768740500000000000000A003401453697A652E506C6174666F726D44
              656661756C74080A536F757263654C696E6B0E010E436170496E736574732E4C
              6566740500000000000000C001400D436170496E736574732E546F7005000000
              00000000C001400F436170496E736574732E52696768740500000000000000C0
              014010436170496E736574732E426F74746F6D0500000000000000C001400F53
              6F75726365526563742E4C65667405000000000000009506400E536F75726365
              526563742E546F7005000000000000009E074010536F75726365526563742E52
              696768740500000000000000D2064011536F75726365526563742E426F74746F
              6D0500000000000000AC074000010E436170496E736574732E4C656674050000
              00000000009002400D436170496E736574732E546F7005000000000000009002
              400F436170496E736574732E5269676874050000000000000090024010436170
              496E736574732E426F74746F6D0500000000000000900240055363616C650500
              000000000000C0FF3F0F536F75726365526563742E4C65667405000000000000
              00DF06400E536F75726365526563742E546F700500000000000000ED07401053
              6F75726365526563742E526967687405000000000000809D074011536F757263
              65526563742E426F74746F6D050000000000000081084000010E436170496E73
              6574732E4C6566740500000000000000C002400D436170496E736574732E546F
              700500000000000000C002400F436170496E736574732E526967687405000000
              00000000C0024010436170496E736574732E426F74746F6D0500000000000000
              C00240055363616C6505000000000000008000400F536F75726365526563742E
              4C65667405000000000000009507400E536F75726365526563742E546F700500
              0000000000009E084010536F75726365526563742E5269676874050000000000
              0000D2074011536F75726365526563742E426F74746F6D0500000000000000AC
              08400000064F706171756509000C545374796C654F626A65637400095374796C
              654E616D65060A68696E64696361746F7205416C69676E07044C656674064C6F
              636B6564090C4D617267696E732E4C656674050000000000000080FF3F0B4D61
              7267696E732E546F70050000000000000080FF3F0D4D617267696E732E526967
              6874050000000000000080FF3F0E4D617267696E732E426F74746F6D05000000
              0000000080FF3F0C536F757263654C6F6F6B7570061B57696E646F7773203130
              204465736B746F707374796C652E706E670A506F736974696F6E2E5805000000
              0000000080FF3F0A506F736974696F6E2E59050000000000000080FF3F0A5369
              7A652E57696474680500000000000000C804400B53697A652E48656967687405
              000000000000009003401453697A652E506C6174666F726D44656661756C7408
              0A536F757263654C696E6B0E010E436170496E736574732E4C65667405000000
              00000000E001400D436170496E736574732E546F700500000000000000A00140
              0F436170496E736574732E52696768740500000000000000E001401043617049
              6E736574732E426F74746F6D0500000000000000A001400F536F757263655265
              63742E4C65667405000000000000009506400E536F75726365526563742E546F
              7005000000000000808D074010536F75726365526563742E5269676874050000
              0000000000D3064011536F75726365526563742E426F74746F6D050000000000
              00809A074000010E436170496E736574732E4C6566740500000000000000A002
              400D436170496E736574732E546F7005000000000000008002400F436170496E
              736574732E52696768740500000000000000A0024010436170496E736574732E
              426F74746F6D0500000000000000800240055363616C650500000000000000C0
              FF3F0F536F75726365526563742E4C6566740500000000000000DF06400E536F
              75726365526563742E546F700500000000000000D4074010536F757263655265
              63742E526967687405000000000000009E074011536F75726365526563742E42
              6F74746F6D0500000000000080E7074000010E436170496E736574732E4C6566
              740500000000000000E002400D436170496E736574732E546F70050000000000
              0000A002400F436170496E736574732E52696768740500000000000000E00240
              10436170496E736574732E426F74746F6D0500000000000000A0024005536361
              6C6505000000000000008000400F536F75726365526563742E4C656674050000
              00000000009507400E536F75726365526563742E546F7005000000000000808D
              084010536F75726365526563742E52696768740500000000000000D307401153
              6F75726365526563742E426F74746F6D05000000000000809A08400000064F70
              6171756509000A5452656374616E676C6500095374796C654E616D65060C4669
              6C6C436F6C6F7242617205416C69676E0706436C69656E740A46696C6C2E436F
              6C6F720707636C614E756C6C0A53697A652E57696474680500000000000000C8
              04400B53697A652E48656967687405000000000000009003401453697A652E50
              6C6174666F726D44656661756C74080B5374726F6B652E4B696E6407044E6F6E
              6507585261646975730500000000000000800140075952616469757305000000
              00000000800140000000000C545374796C654F626A65637400095374796C654E
              616D65060676747261636B05416C69676E0708436F6E74656E74730C536F7572
              63654C6F6F6B7570061B57696E646F7773203130204465736B746F707374796C
              652E706E670A53697A652E576964746805000000000000808807400B53697A65
              2E4865696768740500000000000000A003401453697A652E506C6174666F726D
              44656661756C74080A536F757263654C696E6B0E010E436170496E736574732E
              4C6566740500000000000000E001400D436170496E736574732E546F70050000
              0000000000E001400F436170496E736574732E52696768740500000000000000
              E0014010436170496E736574732E426F74746F6D0500000000000000E001400F
              536F75726365526563742E4C6566740500000000000000D906400E536F757263
              65526563742E546F7005000000000000808D074010536F75726365526563742E
              52696768740500000000000000F5064011536F75726365526563742E426F7474
              6F6D0500000000000000AC074000010E436170496E736574732E4C6566740500
              000000000000A002400D436170496E736574732E546F700500000000000000A0
              02400F436170496E736574732E52696768740500000000000000A00240104361
              70496E736574732E426F74746F6D0500000000000000A00240055363616C6505
              00000000000000C0FF3F0F536F75726365526563742E4C656674050000000000
              0080A207400E536F75726365526563742E546F700500000000000000D4074010
              536F75726365526563742E52696768740500000000000080B7074011536F7572
              6365526563742E426F74746F6D050000000000000081084000010E436170496E
              736574732E4C6566740500000000000000E002400D436170496E736574732E54
              6F700500000000000000E002400F436170496E736574732E5269676874050000
              0000000000E0024010436170496E736574732E426F74746F6D05000000000000
              00E00240055363616C6505000000000000008000400F536F7572636552656374
              2E4C6566740500000000000000D907400E536F75726365526563742E546F7005
              000000000000808D084010536F75726365526563742E52696768740500000000
              000000F5074011536F75726365526563742E426F74746F6D0500000000000000
              AC08400000064F706171756509000C545374796C654F626A6563740009537479
              6C654E616D65060A76696E64696361746F7205416C69676E0706426F74746F6D
              064C6F636B6564090C4D617267696E732E4C656674050000000000000080FF3F
              0B4D617267696E732E546F70050000000000000080FF3F0D4D617267696E732E
              5269676874050000000000000080FF3F0E4D617267696E732E426F74746F6D05
              0000000000000080FF3F0C536F757263654C6F6F6B7570061B57696E646F7773
              203130204465736B746F707374796C652E706E670A506F736974696F6E2E5805
              0000000000000080FF3F0A506F736974696F6E2E590500000000000000F803C0
              0A53697A652E576964746805000000000000808707400B53697A652E48656967
              68740500000000000000C804401453697A652E506C6174666F726D4465666175
              6C74080A536F757263654C696E6B0E010E436170496E736574732E4C65667405
              00000000000000A001400D436170496E736574732E546F700500000000000000
              E001400F436170496E736574732E52696768740500000000000000A001401043
              6170496E736574732E426F74746F6D0500000000000000E001400F536F757263
              65526563742E4C6566740500000000000000FC06400E536F7572636552656374
              2E546F7005000000000000008D074010536F75726365526563742E5269676874
              05000000000000008B074011536F75726365526563742E426F74746F6D050000
              0000000000AC074000010E436170496E736574732E4C65667405000000000000
              008002400D436170496E736574732E546F700500000000000000A002400F4361
              70496E736574732E5269676874050000000000000080024010436170496E7365
              74732E426F74746F6D0500000000000000A00240055363616C65050000000000
              0000C0FF3F0F536F75726365526563742E4C6566740500000000000000BD0740
              0E536F75726365526563742E546F700500000000000080D3074010536F757263
              65526563742E52696768740500000000000080D0074011536F75726365526563
              742E426F74746F6D050000000000000081084000010E436170496E736574732E
              4C6566740500000000000000A002400D436170496E736574732E546F70050000
              0000000000E002400F436170496E736574732E52696768740500000000000000
              A0024010436170496E736574732E426F74746F6D0500000000000000E0024005
              5363616C6505000000000000008000400F536F75726365526563742E4C656674
              0500000000000000FC07400E536F75726365526563742E546F70050000000000
              00008D084010536F75726365526563742E526967687405000000000000008B08
              4011536F75726365526563742E426F74746F6D0500000000000000AC08400000
              064F7061717565090000000A5452656374616E676C6500095374796C654E616D
              65060D46696C6C436F6C6F72426F726405416C69676E0706436C69656E740A46
              696C6C2E436F6C6F720707636C614E756C6C0A53697A652E5769647468050000
              00000000808807400B53697A652E4865696768740500000000000000A0034014
              53697A652E506C6174666F726D44656661756C74080C5374726F6B652E436F6C
              6F720709636C6153696C76657207585261646975730500000000000000800140
              07595261646975730500000000000000800140000000}
          end>
        Left = 32
        Top = 8
      end
    end

    Je manque cruellement de documentation, m'obligeant à découvrir à tâtons sans aucune certitude de la valeur de mes approches.
    A bientôt. Gilles

  5. #5
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Je manque cruellement de documentation, m'obligeant à découvrir à tâtons
    Je pense que, sans trop m'avancer, nous en sommes tous plus ou moins au même point et c'est encore plus cruel pour les non anglophones.
    J'attends avec impatience la sortie de ce livre
    en aparté, sans vouloir faire de la pub pour PacktPub, profitez des prix bas proposés 6€ pour les livres numériques de la collection, cela ne durera pas éternellement

    Pour en revenir à ta manipulation.
    J'ai donc modifié le Unit.fmx en ce qui concerne le Styles.Item. J'ai coupé le contenu de l'item correspondant à la 'Platform' Windows 10 desktop', l'ai copié dans le premier item (vide) sans préciser de 'PlatForm' en supposant que cela le rendrait générique
    plus simple et certainement plus efficace :
    1- supprimer "default" de la collection
    2- renommer la collection "Windows 10 desktop" (effacer le nom)
    3- optionnel, effacer toutes les autres collections ainsi tu n'auras qu'une seule et unique présentation

    Ce que j'ai compris pour l'instant c'est que une partie des styles, tous les éléments correspondant à des SytleObjects font référence à un png (propriété sourcelookup) où plus exactement une zone de ce dernier (c'est là où ça devient corsé cliquer sur la propriété SourceLink pour comprendre comment ça se passe). L'image, les positions et pas mal d'autres choses sont stockées en tant que ressource dans le fmx (le RessourcesBin de la ligne 31 du code unit1.fmx) mais tout est compressé et donc illisible
    Pour étudier un fichier style une bonne idée est de passer tout simplement par un éditeur de texte on y retrouve alors une structure comparable à un fichier fmx.

    Même ainsi toutes les modifications de style ne fonctionnent pas : hier j'ai tenté en vain de changer les headers des grilles. Si ajouter un rectangle pour la couleur a fonctionné, impossible de changer l'alignement du texte même mis à droite (trailing) le texte revient obstinément aligné à gauche il y a là une subtilité que je ne pige pas !
    constatations :
    1-L'élément de style Header n'a aucune propriété texte, il faut modifier l'élément HeaderStyleItem (sauf qu'une grille n'a pas cette ressource)
    2-même en changeant la propriété d'alignement de la ressource "text" de HeaderStyleItem cela ne change pas
    3-la seule solution pour changer les entêtes de colonnes d'une grille est donc de passer par la codification de l'évènement OnDrawColumnHeader ce qui serait très bien si l'on pouvait accéder aux valeurs des couleurs de fonte par défaut (ce qui n'est pas le cas avec FMX du moins à ma connaissance)

    mais en Linux je ne dispose pas de la couleur par défaut (verte sous Win 10)
    faudra que je prenne le temps de faire un test

    comment crée-t-on le style FMXLinux (ici Ubuntu-16.04)
    la question à tiroir
    Faire un fichier .style que l'on charge ? Pour ce que j'en sais cela passe par la création d'un style vcl (fichier vsf) que l'on transforme ensuite, pour ce qui est du png de ressource si l'on veut changer des couleurs il faudrait passer par Adobe
    Faire un élément 'linux' que l'on ajoute à la collection des "styles" ? Aucune idée du nom exact qu'il faut donner

    Serge
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour Serge,

    • Ok pour la méthode moins "manuelle" que la mienne
    • J'ai envoyé une demande à FMXlinux pour savoir s'il existe un meilleur moyen "d'intégrer" le style Linux. Si j'obtiens une réponse satisfaisante, je la joindrai à cette discussion avant de la clore.
    • Merci pour le lien. Je viens de passer commande aussi.


    Bonne journée. A bientôt. Gilles

Discussions similaires

  1. Changer la couleur de la barre des menus
    Par ptinavir dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 02/11/2010, 10h46
  2. [WD14] Changer la couleur de la barre de titre
    Par Bowen dans le forum WinDev
    Réponses: 1
    Dernier message: 29/07/2009, 20h25
  3. changer la couleur d'une barre de l'histogramme
    Par mspeach dans le forum MATLAB
    Réponses: 5
    Dernier message: 31/05/2009, 12h10
  4. Réponses: 4
    Dernier message: 22/02/2008, 15h52
  5. Réponses: 2
    Dernier message: 26/11/2007, 17h24

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