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 :

Extraire et décompresser un stylebook


Sujet :

Composants FMX Delphi

  1. #1
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 266
    Points : 41 663
    Points
    41 663
    Billets dans le blog
    64
    Par défaut Extraire et décompresser un stylebook
    Bonjour,
    Aujourd'hui je m'attaque au cœur de la cible, à savoir le contenu d'un TStyleBook

    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
    procedure TForm5.Button2Click(Sender: TObject);
    function Serialization(const O1: TComponent): string; // ALWEBER production ;-) 
    var
      MS1, MS2: TMemoryStream;
      Sl1: TStringList;
    begin
      MS1 := TMemoryStream.Create;
      MS2 := TMemoryStream.Create;
      Sl1 := TStringList.Create;
      MS1.WriteComponent(O1);
      MS1.Seek(0, soFromBeginning);
      ObjectBinaryToText(MS1, MS2);
      MS2.Seek(0, soFromBeginning);
      Sl1.LoadFromStream(MS2);
      Result := Sl1.text;
      Sl1.Free;
      MS2.Free;
      MS1.Free
    end;
    begin
     memo1.lines.AddStrings(Serialization(Stylebook1));
    end;
    Voici le résultat de cette première opération
    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
    object StyleBook2: TStyleBook
      Styles = <
        item
          ResourcesBin = {
            464D585F5354594C4520322E3501060C7A627574746F6E7374796C65037E0E00
            5450463007544C61796F757400095374796C654E616D65060C7A627574746F6E
            7374796C6505416C69676E070643656E7465720A53697A652E57696474680500
            0000000000009408400B53697A652E4865696768740500000000000080810840
            1453697A652E506C6174666F726D44656661756C7408085461624F7264657202
            03001254427574746F6E5374796C654F626A65637400095374796C654E616D65
            060A6261636B67726F756E6405416C69676E0708436F6E74656E74730C536F75
            7263654C6F6F6B7570061743616C7970736F2053452057696E7374796C652E70
            6E670A53697A652E576964746805000000000000009408400B53697A652E4865
            6967687405000000000000808108401453697A652E506C6174666F726D446566
            61756C740807486F744C696E6B0E010E436170496E736574732E4C6566740500
            000000000000E001400D436170496E736574732E546F700500000000000000E0
            01400F436170496E736574732E52696768740500000000000000E00140104361
            70496E736574732E426F74746F6D0500000000000000E001400F536F75726365
            526563742E4C6566740500000000000000C001400E536F75726365526563742E
            546F700500000000000000C8064010536F75726365526563742E526967687405
            0000000000000088044011536F75726365526563742E426F74746F6D05000000
            00000000E5064000010E436170496E736574732E4C6566740500000000000000
            A002400D436170496E736574732E546F700500000000000000A002400F436170
            496E736574732E52696768740500000000000000A0024010436170496E736574
            732E426F74746F6D0500000000000000A00240055363616C6505000000000000
            00C0FF3F0F536F75726365526563742E4C65667405000000000000009002400E
            536F75726365526563742E546F70050000000000000096074010536F75726365
            526563742E52696768740500000000000000CC044011536F7572636552656374
            2E426F74746F6D0500000000000080AB074000010E436170496E736574732E4C
            6566740500000000000000E002400D436170496E736574732E546F7005000000
            00000000E002400F436170496E736574732E52696768740500000000000000E0
            024010436170496E736574732E426F74746F6D0500000000000000E002400553
            63616C6505000000000000008000400F536F75726365526563742E4C65667405
            00000000000000C002400E536F75726365526563742E546F7005000000000000
            00C8074010536F75726365526563742E52696768740500000000000000880540
            11536F75726365526563742E426F74746F6D0500000000000000E5074000000B
            466F63757365644C696E6B0E010E436170496E736574732E4C65667405000000
            00000000E001400D436170496E736574732E546F700500000000000000E00140
            0F436170496E736574732E52696768740500000000000000E001401043617049
            6E736574732E426F74746F6D0500000000000000E001400F536F757263655265
            63742E4C6566740500000000000000C001400E536F75726365526563742E546F
            700500000000000000C8064010536F75726365526563742E5269676874050000
            000000000088044011536F75726365526563742E426F74746F6D050000000000
            0000E5064000010E436170496E736574732E4C6566740500000000000000A002
            400D436170496E736574732E546F700500000000000000A002400F436170496E
            736574732E52696768740500000000000000A0024010436170496E736574732E
            426F74746F6D0500000000000000A00240055363616C650500000000000000C0
            FF3F0F536F75726365526563742E4C65667405000000000000009002400E536F
            75726365526563742E546F70050000000000000096074010536F757263655265
            63742E52696768740500000000000000CC044011536F75726365526563742E42
            6F74746F6D0500000000000000AC074000010E436170496E736574732E4C6566
            740500000000000000E002400D436170496E736574732E546F70050000000000
            0000E002400F436170496E736574732E52696768740500000000000000E00240
            10436170496E736574732E426F74746F6D0500000000000000E0024005536361
            6C6505000000000000008000400F536F75726365526563742E4C656674050000
            0000000000C002400E536F75726365526563742E546F700500000000000000C8
            074010536F75726365526563742E526967687405000000000000008805401153
            6F75726365526563742E426F74746F6D0500000000000000E5074000000A4E6F
            726D616C4C696E6B0E010E436170496E736574732E4C65667405000000000000
            00E001400D436170496E736574732E546F700500000000000000E001400F4361
            70496E736574732E52696768740500000000000000E0014010436170496E7365
            74732E426F74746F6D0500000000000000E001400F536F75726365526563742E
            4C6566740500000000000000C001400E536F75726365526563742E546F700500
            000000000000A2064010536F75726365526563742E5269676874050000000000
            000088044011536F75726365526563742E426F74746F6D0500000000000000BF
            064000010E436170496E736574732E4C6566740500000000000000A002400D43
            6170496E736574732E546F700500000000000000A002400F436170496E736574
            732E52696768740500000000000000A0024010436170496E736574732E426F74
            746F6D0500000000000000A00240055363616C650500000000000000C0FF3F0F
            536F75726365526563742E4C65667405000000000000009002400E536F757263
            65526563742E546F700500000000000000F3064010536F75726365526563742E
            52696768740500000000000000CC044011536F75726365526563742E426F7474
            6F6D05000000000000008F074000010E436170496E736574732E4C6566740500
            000000000000E002400D436170496E736574732E546F700500000000000000E0
            02400F436170496E736574732E52696768740500000000000000E00240104361
            70496E736574732E426F74746F6D0500000000000000E00240055363616C6505
            000000000000008000400F536F75726365526563742E4C656674050000000000
            0000C002400E536F75726365526563742E546F700500000000000000A2074010
            536F75726365526563742E5269676874050000000000000088054011536F7572
            6365526563742E426F74746F6D0500000000000000BF074000000B5072657373
            65644C696E6B0E010E436170496E736574732E4C6566740500000000000000E0
            01400D436170496E736574732E546F700500000000000000E001400F43617049
            6E736574732E52696768740500000000000000E0014010436170496E73657473
            2E426F74746F6D0500000000000000E001400F536F75726365526563742E4C65
            66740500000000000000C001400E536F75726365526563742E546F7005000000
            00000000EB064010536F75726365526563742E52696768740500000000000000
            88044011536F75726365526563742E426F74746F6D0500000000000000840740
            00010E436170496E736574732E4C6566740500000000000000A002400D436170
            496E736574732E546F700500000000000000A002400F436170496E736574732E
            52696768740500000000000000A0024010436170496E736574732E426F74746F
            6D0500000000000000A00240055363616C650500000000000000C0FF3F0F536F
            75726365526563742E4C65667405000000000000009002400E536F7572636552
            6563742E546F700500000000000000B0074010536F75726365526563742E5269
            6768740500000000000000CC044011536F75726365526563742E426F74746F6D
            0500000000000080C5074000010E436170496E736574732E4C65667405000000
            00000000E002400D436170496E736574732E546F700500000000000000E00240
            0F436170496E736574732E52696768740500000000000000E002401043617049
            6E736574732E426F74746F6D0500000000000000E00240055363616C65050000
            00000000008000400F536F75726365526563742E4C6566740500000000000000
            C002400E536F75726365526563742E546F700500000000000000EB074010536F
            75726365526563742E5269676874050000000000000088054011536F75726365
            526563742E426F74746F6D0500000000000000840840000013546F756368416E
            696D6174696F6E2E4C696E6B0E0000000654476C79706800095374796C654E61
            6D65060A676C7970687374796C650C4D617267696E732E4C6566740500000000
            000000C000400B4D617267696E732E546F7005000000000000008000400D4D61
            7267696E732E5269676874050000000000000080FF3F0E4D617267696E732E42
            6F74746F6D050000000000000080004005416C69676E07044C6566740A53697A
            652E576964746805000000000000008003400B53697A652E4865696768740500
            0000000000008003401453697A652E506C6174666F726D44656661756C740800
            001654427574746F6E5374796C65546578744F626A65637400095374796C654E
            616D6506047465787405416C69676E0706436C69656E74064C6F636B6564090C
            4D617267696E732E4C65667405000000000000008000400B4D617267696E732E
            546F7005000000000000008000400D4D617267696E732E526967687405000000
            000000008000400E4D617267696E732E426F74746F6D05000000000000008000
            400A53697A652E576964746805000000000000009308400B53697A652E486569
            67687405000000000000808008401453697A652E506C6174666F726D44656661
            756C74080454657874060454657874165465787453657474696E67732E466F6E
            74436F6C6F720709636C6159656C6C6F770D536861646F7756697369626C6508
            08486F74436F6C6F7207097846463134323533460C466F6375736564436F6C6F
            7207097846463134323533460B4E6F726D616C436F6C6F720709636C6159656C
            6C6F770C50726573736564436F6C6F720709784646313432353346000000}
        end>
      Left = 456
      Top = 105
    end
    comme vous le constatez c'est du binaire compressé.
    le composant StyleBook enregistre les informations de style dans un format compressé binaire dans le fichier FMX
    La première fois qu'Embarcadero a utilisé cette technique (Delphi XE4), Marco Cantu avait produit un outil (cf blog)
    Depuis, hélas, Code Central est plus que vacillant difficile de récupérer (mais j'y ai eu accès ) le dit outil qui de toute façon n'était que pour XE4.

    Donc, je voudrais tenter :
    1- D'obtenir uniquement le binaire (ResourcesBin)
    2- Tenter de le décompresser. Dans un premier temps histoire de voir ce que cela contient.

    Pour l'instant, le problème est posé mais, je sèche. Si, AMHA, il s'agit d'un Stream de ressource je ne vois pas comment le travailler au corps
    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

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2024
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2024
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    je ne travaille pas actuellement avec Delphi mais récemment j'avais lu un article sur les Resources (ResourcesBin) dont j'ai noté l'adresse... peut-être sans intérêt, ni lien avec le fil de cette discussion. Mais cette "obscurité" dans les sources de Delphi et donc dans la compréhension fine (synonyme à mon sens d'une meilleure efficacité) de son utilisation (de ce qu'on fait et engage réellement) m'interpelle beaucoup surtout quand c'est un utilisateur averti qui pose la question .

    Cordialement. GG

  3. #3
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 266
    Points : 41 663
    Points
    41 663
    Billets dans le blog
    64
    Par défaut
    Bonjour et merci pour ce lien.
    C'est intéressant, même si je ne crois pas que soit vraiment ce que je cherche, c'est l'analyse d'un fichier de type .res or je ne suis pas sur que l'extraction faite en soit un.
    On retrouve une doc de ce code

    ce que je recherche en premier lieu c'est le moyen de récupérer la partie 'binaire' de ce texte qui ne paraît pas être du JSON ni du XML, tel rocky je me remets sur le ring
    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

  4. #4
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 509
    Points : 2 780
    Points
    2 780
    Billets dans le blog
    10
    Par défaut FMX ou VCL
    FMX ou VCL ?

  5. #5
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 509
    Points : 2 780
    Points
    2 780
    Billets dans le blog
    10

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 266
    Points : 41 663
    Points
    41 663
    Billets dans le blog
    64
    Par défaut
    Citation Envoyé par ALWEBER Voir le message
    FMX ou VCL ?
    question superflue :
    1. la discussion est dans Composants FMX
    2. Il n'y a pas de TStyleBook en VCL mais des apparences niveau options du projet.

    Le mélange entre apparences et styles FMX c'est un truc que je dénonce chaque fois que je le peux. Ok, un style firemonkey est créé à partir d'une apparence windows en utilisant le "concepteur de styles bitmaps" (je crois que c'est de là que vient la confusion) mais entre un style FMX et une apparence VCL il y a de grandes différences par exemple :
    • en FMX pas de liste de "couleurs systeme"
    • en VCL pas d'effets

    La conversion d'une Apparence VCL vers un Style FMX est un processus inexpliqué et c'est, pour moi, fort dommage.

    le projet FMX que tu fourni, c'est exactement ce que j'ai fait pour obtenir le texte dans un mémo, d'ailleurs je te cite en commentaire // ALWEBER production ;-)ce que je veux moi, c'est aller au-delà de cette étape :
    1- récupérer la valeur de resourcebin de préférence dans un stream
    2- s'il s'agit bien d'une compression, tenter une décompression avec TZCompression
    3- si compression, récupérer directement dans un TZCompressionStream
    et voir le résultat pour plus si affinités
    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

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 706
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 706
    Points : 25 585
    Points
    25 585
    Par défaut
    Si tu as déjà le compo TStyleHook en mémoire, pas besoin de le sérializer tu peux l'utiliser directement ...

    Pièce jointe 661336
    J'ai supposé que le TStyleHook était posé sur la Form et contenait tout ce qu'il faut, j'ai repris dans la DFM ton style

    C'est écrit en D10

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TForm1.Button2Click(Sender: TObject);
    var
      MS: TMemoryStream;
    begin
      MS := TMemoryStream.Create();
      try
        StyleBook1.Styles.Items[0].SaveToStream(MS, FMX.Styles.TStyleFormat.Text);
        MS.Seek(0, soBeginning);
        Memo2.Lines.LoadFromStream(MS);
      finally
        MS.Free();
      end;
    end;
    Code dfm : 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
    173
    174
    175
    176
    177
    178
    179
    180
    181
    object TStyleContainer
      object TLayout
        StyleName = 'zbuttonstyle'
        Align = Center
        Size.Width = 592.000000000000000000
        Size.Height = 518.000000000000000000
        Size.PlatformDefault = False
        TabOrder = 0
        object TButtonStyleObject
          StyleName = 'background'
          Align = Contents
          SourceLookup = 'Calypso SE Winstyle.png'
          Size.Width = 592.000000000000000000
          Size.Height = 518.000000000000000000
          Size.PlatformDefault = False
          HotLink = <
            item
              CapInsets.Left = 7.000000000000000000
              CapInsets.Top = 7.000000000000000000
              CapInsets.Right = 7.000000000000000000
              CapInsets.Bottom = 7.000000000000000000
              SourceRect.Left = 6.000000000000000000
              SourceRect.Top = 200.000000000000000000
              SourceRect.Right = 34.000000000000000000
              SourceRect.Bottom = 229.000000000000000000
            end
            item
              CapInsets.Left = 10.000000000000000000
              CapInsets.Top = 10.000000000000000000
              CapInsets.Right = 10.000000000000000000
              CapInsets.Bottom = 10.000000000000000000
              Scale = 1.500000000000000000
              SourceRect.Left = 9.000000000000000000
              SourceRect.Top = 300.000000000000000000
              SourceRect.Right = 51.000000000000000000
              SourceRect.Bottom = 343.000000000000000000
            end
            item
              CapInsets.Left = 14.000000000000000000
              CapInsets.Top = 14.000000000000000000
              CapInsets.Right = 14.000000000000000000
              CapInsets.Bottom = 14.000000000000000000
              Scale = 2.000000000000000000
              SourceRect.Left = 12.000000000000000000
              SourceRect.Top = 400.000000000000000000
              SourceRect.Right = 68.000000000000000000
              SourceRect.Bottom = 458.000000000000000000
            end>
          FocusedLink = <
            item
              CapInsets.Left = 7.000000000000000000
              CapInsets.Top = 7.000000000000000000
              CapInsets.Right = 7.000000000000000000
              CapInsets.Bottom = 7.000000000000000000
              SourceRect.Left = 6.000000000000000000
              SourceRect.Top = 200.000000000000000000
              SourceRect.Right = 34.000000000000000000
              SourceRect.Bottom = 229.000000000000000000
            end
            item
              CapInsets.Left = 10.000000000000000000
              CapInsets.Top = 10.000000000000000000
              CapInsets.Right = 10.000000000000000000
              CapInsets.Bottom = 10.000000000000000000
              Scale = 1.500000000000000000
              SourceRect.Left = 9.000000000000000000
              SourceRect.Top = 300.000000000000000000
              SourceRect.Right = 51.000000000000000000
              SourceRect.Bottom = 344.000000000000000000
            end
            item
              CapInsets.Left = 14.000000000000000000
              CapInsets.Top = 14.000000000000000000
              CapInsets.Right = 14.000000000000000000
              CapInsets.Bottom = 14.000000000000000000
              Scale = 2.000000000000000000
              SourceRect.Left = 12.000000000000000000
              SourceRect.Top = 400.000000000000000000
              SourceRect.Right = 68.000000000000000000
              SourceRect.Bottom = 458.000000000000000000
            end>
          NormalLink = <
            item
              CapInsets.Left = 7.000000000000000000
              CapInsets.Top = 7.000000000000000000
              CapInsets.Right = 7.000000000000000000
              CapInsets.Bottom = 7.000000000000000000
              SourceRect.Left = 6.000000000000000000
              SourceRect.Top = 162.000000000000000000
              SourceRect.Right = 34.000000000000000000
              SourceRect.Bottom = 191.000000000000000000
            end
            item
              CapInsets.Left = 10.000000000000000000
              CapInsets.Top = 10.000000000000000000
              CapInsets.Right = 10.000000000000000000
              CapInsets.Bottom = 10.000000000000000000
              Scale = 1.500000000000000000
              SourceRect.Left = 9.000000000000000000
              SourceRect.Top = 243.000000000000000000
              SourceRect.Right = 51.000000000000000000
              SourceRect.Bottom = 286.000000000000000000
            end
            item
              CapInsets.Left = 14.000000000000000000
              CapInsets.Top = 14.000000000000000000
              CapInsets.Right = 14.000000000000000000
              CapInsets.Bottom = 14.000000000000000000
              Scale = 2.000000000000000000
              SourceRect.Left = 12.000000000000000000
              SourceRect.Top = 324.000000000000000000
              SourceRect.Right = 68.000000000000000000
              SourceRect.Bottom = 382.000000000000000000
            end>
          PressedLink = <
            item
              CapInsets.Left = 7.000000000000000000
              CapInsets.Top = 7.000000000000000000
              CapInsets.Right = 7.000000000000000000
              CapInsets.Bottom = 7.000000000000000000
              SourceRect.Left = 6.000000000000000000
              SourceRect.Top = 235.000000000000000000
              SourceRect.Right = 34.000000000000000000
              SourceRect.Bottom = 264.000000000000000000
            end
            item
              CapInsets.Left = 10.000000000000000000
              CapInsets.Top = 10.000000000000000000
              CapInsets.Right = 10.000000000000000000
              CapInsets.Bottom = 10.000000000000000000
              Scale = 1.500000000000000000
              SourceRect.Left = 9.000000000000000000
              SourceRect.Top = 352.000000000000000000
              SourceRect.Right = 51.000000000000000000
              SourceRect.Bottom = 395.000000000000000000
            end
            item
              CapInsets.Left = 14.000000000000000000
              CapInsets.Top = 14.000000000000000000
              CapInsets.Right = 14.000000000000000000
              CapInsets.Bottom = 14.000000000000000000
              Scale = 2.000000000000000000
              SourceRect.Left = 12.000000000000000000
              SourceRect.Top = 470.000000000000000000
              SourceRect.Right = 68.000000000000000000
              SourceRect.Bottom = 528.000000000000000000
            end>
          TouchAnimation.Link = <>
        end
        object TGlyph
          StyleName = 'glyphstyle'
          Margins.Left = 3.000000000000000000
          Margins.Top = 2.000000000000000000
          Margins.Right = 1.000000000000000000
          Margins.Bottom = 2.000000000000000000
          Align = Left
          Size.Width = 16.000000000000000000
          Size.Height = 16.000000000000000000
          Size.PlatformDefault = False
        end
        object TButtonStyleTextObject
          StyleName = 'text'
          Align = Client
          Locked = True
          Margins.Left = 2.000000000000000000
          Margins.Top = 2.000000000000000000
          Margins.Right = 2.000000000000000000
          Margins.Bottom = 2.000000000000000000
          Size.Width = 588.000000000000000000
          Size.Height = 514.000000000000000000
          Size.PlatformDefault = False
          Text = 'Text'
          TextSettings.FontColor = claYellow
          ShadowVisible = False
          HotColor = xFF14253F
          FocusedColor = xFF14253F
          NormalColor = claYellow
          PressedColor = xFF14253F
        end
      end
    end



    Si tu dois le coder en XE4, peut-être qu'il faudra hacker l'objet TStyleCollectionItem pour accéder à l'objet FStyle / FBinary et la méthode privée WriteResources (qui utilise TStyleStreaming.SaveToStream)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    type
      TStyleCollectionItemHacker = class(TCollectionItem)
      private
        [Weak] FStyleBook: TStyleBook;
        FBinary: TMemoryStream;
        FStyle: TFmxObject;
      public
        procedure SaveToTextStream(Stream: TStream);
      end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    { TStyleCollectionItemHacker }
     
    procedure TStyleCollectionItemHacker.SaveToTextStream(Stream: TStream);
    begin
      FMX.Styles.TStyleStreaming.SaveToStream(FStyle, Stream, TStyleFormat.Text);
    end;
    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

Discussions similaires

  1. extraire 2 chiffres après virgule ?
    Par nerick dans le forum C
    Réponses: 2
    Dernier message: 13/12/2002, 18h10
  2. Extraire les icônes d'une DLL
    Par Globus dans le forum MFC
    Réponses: 6
    Dernier message: 13/09/2002, 14h44
  3. Extraire des chaines d'un RES
    Par Dumont dans le forum Langage
    Réponses: 2
    Dernier message: 20/08/2002, 09h13
  4. Réponses: 2
    Dernier message: 10/07/2002, 12h51
  5. Réponses: 2
    Dernier message: 30/05/2002, 11h19

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