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 :

[D11] Autre chose que le Toolbar


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 021
    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 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut [D11] Autre chose que le Toolbar
    Bonjour,

    je suis fortement déçu par le ToolBar de mon interface
    Nom : Capture.PNG
Affichages : 198
Taille : 16,2 Ko
    Autant par l'image (mais ça, ça peut se gérer, ce sont des TPaths) que par le comportement quelque peu erratique après quelques "resize" de forme ou de zone (avec le splitter)

    Nom : Capture_1.PNG
Affichages : 185
Taille : 10,7 Ko
    un bug probable de D11

    Quelle serait les alternatives (non TMS ) ?
    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
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    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 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Pour l'instant j'ai choisi un Multiview en mode tiroir
    Nom : Capture.PNG
Affichages : 186
Taille : 10,9 Ko

    Cela dit, le mode tiroir, me fait hésiter, le multiview aussi d'ailleurs.
    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
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    La toolbar c'est quand même plus pratique pour des trucs de mise en forme. Bizarre que tu aies ces problèmes de taille. Tout est aligné et recardé automatiquement ou y a du code quelque part ?

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 429
    Points : 24 794
    Points
    24 794
    Par défaut
    Je sais que c'est en FMX mais en VCL, plusieurs TSplitter, ça peut déconner sur les resize aussi, sans compter le scale de windows pour le 4K ... et parle même pas de la zone cliente d'un MDI qui dupliquait il y a longtemps le dessin des TSplitter (en D7 par exemple)

    Entre les Anchors, les Constraints, j'ai remarqué que les Align sont moins souvent "abimés", cela oblige à avoir plus de conteneur imbriqué.

    Tu l'as remplacé par une sorte de Burger Menu, je ne connaissais même pas le terme français "menu à tiroir", j'ai appris un truc !
    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

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    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 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par ShaiLeTroll
    en VCL, plusieurs TSplitter, ça peut déconner sur les resize.. Entre les Anchors, les Constraints, j'ai remarqué que les Align sont moins souvent "abimés"
    @Patrick Oui, c'est bizarre cette toolbar qui se retaille mal. Je ferais un test avec juste une toolbar pour vérifier ça et à l'occasion soumettre.

    Finalement, j'ai viré le tiroir et mis les divers Expanders dans un TLayout ce qui donne un truc pas trop moche (je vais devoir mettre ces trucs dans un VertScrollBox)

    Nom : Capture.PNG
Affichages : 173
Taille : 58,9 Ko

    - récupération des Todos de chaque source du projet en prime, avec image pour les priorités (diodes à revoir) et DONE (double check)
    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
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    PS : désolé de t'avoir donné du travail supplémentaire

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    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 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    J'ai "simplement" modifié mon expression régulière, quoique, j'ai quelques faux positifs qu'il faut que je résolve.
    J'hésite donc entre plusieurs solutions (brouillon) :
    une expression par type de todo/done {\s*(TODO|DONE).*: ....}'|'//\s*(TODO|DONE).*: ....' |'(\*\s*(TODO|DONE).*:....*)
    ou ,ce qui me plantait en fin de soirée, une expression unique (?<marqueur>{|//|\(\*)\s*(?<type>TODO|DONE)\s*(?<priorite>\d*).*:(?<texte>.*}?|(\*\)?))
    le hic restant le multiligne possible des "marqueurs" { et *), en fait, c'est là que ça plantait en fin de soirée

    N.B. Je ne suis pas un as des expressions régulières, mais grâce à Expresso j'arrive (péniblement) à créer et surtout tester mes expressions
    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

  8. #8
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Connaissais pas ce logiciel. Suis plutôt https://regex101.com car je m'en sers très rarement et aussi pour le web (PHP ou JS).

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    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 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Bon, je suis parti sur les trois expressions plutôt qu'une.
    J'ai encore quelques cas particuliers à gérer genre : je mets un todo au sein d'une ligne de code
    Je me suis débrouillé pour récupérer les lignes suivantes (quand plus d'une ligne) mais, là encore, reste le cas particulier où il y a du code sur la même ligne
    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

  10. #10
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    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 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Pour continuer sur ma lancée, je me suis mis en tête de rajouter des tags standards (<H0>..<H4>) au composant DZHTMLText
    Après quelques tâtonnements je ne suis pas peu fier d'avoir ce résultat

    Nom : Capture.PNG
Affichages : 115
Taille : 13,2 Ko

    via quelques modifications du code
    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
     
    // ligne 1217 du source FMX.DZHTMLText.pas
      const DEF_TOKENS: array[0..25+5] of TDefToken = (
      (Ident: 'BR'; Kind: ttBreak; Single: True),
      (Ident: 'B'; Kind: ttBold),
      (Ident: 'I'; Kind: ttItalic),
      (Ident: 'U'; Kind: ttUnderline),
      (Ident: 'S'; Kind: ttStrike),
      (Ident: 'FN'; Kind: ttFontName; AllowPar: True),
      (Ident: 'FS'; Kind: ttFontSize; AllowPar: True; ProcValue: Tag_IntOneBased_ProcValue),
      {$REGION 'Adding Headers Tags'}
        (Ident: 'H0'; Kind: ttFontSize; AllowPar: False),
        (Ident: 'H1'; Kind: ttFontSize; AllowPar: False),
        (Ident: 'H2'; Kind: ttFontSize; AllowPar: False),
        (Ident: 'H3'; Kind: ttFontSize; AllowPar: False),
        (Ident: 'H4'; Kind: ttFontSize; AllowPar: False),
    {$ENDREGION}
      (Ident: 'FC'; Kind: ttFontColor; AllowPar: True; ProcValue: Tag_Color_ProcValue),
      (Ident: 'BC'; Kind: ttBackColor; AllowPar: True; ProcValue: Tag_Color_ProcValue),
      (Ident: 'A'; Kind: ttLink; AllowPar: True; OptionalPar: True),
      (Ident: 'L'; Kind: ttAlignLeft),
      (Ident: 'C'; Kind: ttAlignCenter),
      (Ident: 'R'; Kind: ttAlignRight),
      (Ident: 'T'; Kind: ttTab; Single: True; AllowPar: True; ProcValue: Tag_IntOneBased_ProcValue),
      (Ident: 'TF'; Kind: ttTabF; Single: True; AllowPar: True; ProcValue: Tag_IntOneBased_ProcValue),
      (Ident: 'IMG'; Kind: ttImage; Single: True; AllowPar: True; ProcValue: Tag_IntZeroBased_ProcValue),
      (Ident: 'IMGRES'; Kind: ttImageResource; Single: True; AllowPar: True),
      (Ident: 'UL'; Kind: ttBulletList), //Unordered HTML List
      (Ident: 'OL'; Kind: ttNumberList), //Ordered HTML List
      (Ident: 'LI'; Kind: ttListItem), //HTML List Item
      (Ident: 'FLOAT'; Kind: ttFloat; AllowPar: True), //Floating div
      (Ident: 'SPOILER'; Kind: ttSpoilerTitle; AllowPar: True),
      (Ident: 'SDETAIL'; Kind: ttSpoilerDetail; AllowPar: True),
      (Ident: 'LS'; Kind: ttLineSpace; AllowPar: True; ProcValue: Tag_IntZeroBased_ProcValue),
      (Ident: 'SUP'; Kind: ttSuperscript),
      (Ident: 'SUB'; Kind: ttSubscript)
    );
     
    function TBuilder.ProcessTag(const Tag: string): Boolean;
    ..
    begin
    ...
    // ligne 1312
    {$REGION 'Compute Headers Tags'}
            if A='H0' then value:=40;
            if A='H1' then value:=32;
            if A='H2' then value:=26;
            if A='H3' then value:=22;
            if A='H4' then value:=20;
    {$ENDREGION}
          AddToken(Def.Kind, TOff, Par, Value);
          Result := True;
          Exit;
        end;
      end;
    end;
    Même si je pense que le code de la région 'Compute Headers Tags' est certainement améliorable ?
    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

  11. #11
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    bien

    plus qu'à soumettre tes modifications sur le projet officiel

  12. #12
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    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 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par pprem Voir le message
    plus qu'à soumettre tes modifications sur le projet officiel
    ce bout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    {$REGION 'Compute Headers Tags'}
            if A='H0' then value:=40;
            if A='H1' then value:=32;
            if A='H2' then value:=26;
            if A='H3' then value:=22;
            if A='H4' then value:=20;
    {$ENDREGION}
    ne me convaincs pas, il y a certainement mieux que ça mais, je n'arrive pas à avoir d'idée.

    Je vois bien une liste avec les items H0=40,....H4=20 c'est l'initialisation de cette liste qui me fait défaut (dans un fichier à part, en $Include ?)

    Ensuite, soumettre, hum je suis loin d'avoir l'expérience GitHub ad hoc
    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

  13. #13
    Membre du Club

    Profil pro
    senior scientist
    Inscrit en
    Mai 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : senior scientist

    Informations forums :
    Inscription : Mai 2003
    Messages : 79
    Points : 67
    Points
    67
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    ce bout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    {$REGION 'Compute Headers Tags'}
            if A='H0' then value:=40;
            if A='H1' then value:=32;
            if A='H2' then value:=26;
            if A='H3' then value:=22;
            if A='H4' then value:=20;
    {$ENDREGION}
    ne me convaincs pas, il y a certainement mieux que ça mais, je n'arrive pas à avoir d'idée.

    Je vois bien une liste avec les items H0=40,....H4=20 c'est l'initialisation de cette liste qui me fait défaut (dans un fichier à part, en $Include ?)
    Je verrais bien un TDictionary, simplement initialisé à la création.
    alx.

  14. #14
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    ce bout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    {$REGION 'Compute Headers Tags'}
            if A='H0' then value:=40;
            if A='H1' then value:=32;
            if A='H2' then value:=26;
            if A='H3' then value:=22;
            if A='H4' then value:=20;
    {$ENDREGION}
    ne me convaincs pas, il y a certainement mieux que ça mais, je n'arrive pas à avoir d'idée.

    Je vois bien une liste avec les items H0=40,....H4=20 c'est l'initialisation de cette liste qui me fait défaut (dans un fichier à part, en $Include ?)
    Pour moi il faut bannir les INCLUDE qui rendent le code incomplet dans l'IDE et ne permettent (pour le moment) pas de recherches.

    Pour ces tests, tu as suivi l'esprit actuel de son projet. Beau ou moche peu importe. C'est lisible par toute personne s'étant déjà penchée dessus et ça fonctionne.

    Citation Envoyé par SergioMaster Voir le message
    Ensuite, soumettre, hum je suis loin d'avoir l'expérience GitHub ad hoc
    En fait c'est plus simple qu'on le pense :
    - aller sur le projet qu'on veut modifier
    - cliquer sur "fork" (en haut à droite) pour dupliquer le projet chez nous
    - travailler sur la version rapatriée chez nous, faire des commit et les envoyer chez GitHub
    (depuis un outil dédié comme Git For windows que j'utilise ou depuis l'IDE qui peut ouvrir notre version du projet depuis le dépôt, faire les COMMIT et synchroniser les mises à jour à condition de lui fournir "git")
    - dans l'interface de GitHub, sur ta version du projet, il indique que tu es en avance sur l'autre et propose de faire un "pull request"
    - il y a juste à remplir les explications à joindre et valider l'envoi

    Explications vers la fin du webinaire sur Git et dans le PDF de la présentation :
    https://serialstreameur.fr/webinaire-20201222.php

  15. #15
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    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 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par _alx_ Voir le message
    Je verrais bien un TDictionary, simplement initialisé à la création.
    Oui, c'est l'idée que je me faisais, sauf que, de la théorie à la pratique...
    dans l'idéal, je remplace ce bloc code par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if FHeaderTags.IndexOfName(A)>-1 then Value:=StrToInt(FHeaderTags.Values[A]);
    où, FHeaderTags est un simple TStrings, sauf que j'ai une lacune : je n'ai pas encore trouvé le bon endroit de la création

    j'ai testé ceci

    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
    constructor TBuilder.Create;
    begin
      inherited;
      LToken := TListToken.Create;
    {$REGION 'Headers Tags Values'}
      FHeaderTags:=TStringList.Create;
        FHeaderTags.AddPair('H0','40');
        FHeaderTags.AddPair('H1','32');
        FHeaderTags.AddPair('H2','26');
        FHeaderTags.AddPair('H3','22');
        FHeaderTags.AddPair('H4','20');
    {$ENDREGION}
    end;
    destructor TBuilder.Destroy;
    begin
      LToken.Free;
      FHeaderTags.free;
      inherited;
    end;
    avec succès, mais j'ai l'impression que le programme rentre plusieurs fois dans ce constructeur.
    mon idéal serait une constante mais est-ce possible ?

    Dans le même ordre d'idée, je me suis penché sur l'interprétation des tags HTML de FastReport FMX, le but étant de pouvoir imprimer mes "todos" selon la même norme que le dzHTML, plutôt que d'imprimer le dzHTMLText.canvas

    Citation Envoyé par pprem
    En fait c'est plus simple qu'on le pense ..
    pas pour un Lundi Kiné
    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

  16. #16
    Membre du Club

    Profil pro
    senior scientist
    Inscrit en
    Mai 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : senior scientist

    Informations forums :
    Inscription : Mai 2003
    Messages : 79
    Points : 67
    Points
    67
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Oui, c'est l'idée que je me faisais, sauf que, de la théorie à la pratique...
    dans l'idéal, je remplace ce bloc code par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if FHeaderTags.IndexOfName(A)>-1 then Value:=StrToInt(FHeaderTags.Values[A]);
    où, FHeaderTags est un simple TStrings, sauf que j'ai une lacune : je n'ai pas encore trouvé le bon endroit de la création

    j'ai testé ceci

    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
    constructor TBuilder.Create;
    begin
      inherited;
      LToken := TListToken.Create;
    {$REGION 'Headers Tags Values'}
      FHeaderTags:=TStringList.Create;
        FHeaderTags.AddPair('H0','40');
        FHeaderTags.AddPair('H1','32');
        FHeaderTags.AddPair('H2','26');
        FHeaderTags.AddPair('H3','22');
        FHeaderTags.AddPair('H4','20');
    {$ENDREGION}
    end;
    destructor TBuilder.Destroy;
    begin
      LToken.Free;
      FHeaderTags.free;
      inherited;
    end;
    avec succès, mais j'ai l'impression que le programme rentre plusieurs fois dans ce constructeur.
    mon idéal serait une constante mais est-ce possible ?
    Avec un TDictionary cela donnerait quelque chose comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var FHeaderTags: TDictionary<string,string>;
     
      ...
      FHeaderTags.Create([TPair<string,string>.Create('H0','40'),
           TPair<string,string>.Create('H1','32')]
           ...etc...);
      ...
    Mais, à ma connaissance, quelque soit la classe à construire (TStringList, TDictionary ou autre), il n'est pas possible en Delphi d'écrire une expression constante qui utilise une instance de classe.
    alx.

  17. #17
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    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 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par _alx_ Voir le message
    Avec un TDictionary cela donnerait quelque chose comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var FHeaderTags: TDictionary<string,string>;
     
      ...
      FHeaderTags.Create([TPair<string,string>.Create('H0','40'),
           TPair<string,string>.Create('H1','32')]
           ...etc...);
      ...
    je suis moins TDictionary car il ne faut pas oublier que le composant est censé fonctionner aussi avec Lazarus
    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

Discussions similaires

  1. Autre chose que les SSII
    Par Invité dans le forum Emploi
    Réponses: 18
    Dernier message: 25/08/2006, 13h36
  2. ON DELETE SET autre chose que null
    Par minirom dans le forum Requêtes
    Réponses: 4
    Dernier message: 26/07/2006, 16h32
  3. Réponses: 11
    Dernier message: 13/05/2006, 16h17
  4. Arrive plus a installer autre chose que debian
    Par kosmic dans le forum Debian
    Réponses: 10
    Dernier message: 12/12/2005, 12h50
  5. [langage] connaissez-vous autre chose que -d
    Par Sébastien dans le forum Langage
    Réponses: 4
    Dernier message: 05/08/2002, 21h13

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