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 :

[Livebindings] Recherche d'un élément


Sujet :

Delphi

  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 029
    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 029
    Points : 40 927
    Points
    40 927
    Billets dans le blog
    62
    Par défaut [Livebindings] Recherche d'un élément
    Bonjour,

    Je sais, cela aurait peut-être plus sa place dans FMX, certains pensent que FMX implique automatiquement LiveBindings @Gilles, mais comme on peut très bien utiliser les LiveBindings avec VCL, je préfère poser la question dans la rubrique langage.

    Voilà le truc, un composant peut être lié et avoir dans l'IDE ce qui semble être une propriété LiveBindings
    exemple (FMX)
    Nom : Capture.PNG
Affichages : 202
Taille : 20,0 Ko

    Mais, dans le cas de l'exemple, accéder à Stringgrid1.LiveBindings n'est pas possible

    Il semble donc que la piste est de chercher dans le BindingsList, suis-je sur la bonne voie ?
    Je sais que beaucoup d'entre vous ne sont pas des adeptes de ce truc barbare, mais, avant que je ne m'enfonce dans ce nouveau "trou bleu" (ceux qui font de la plongée comprendront l'allusion), et à tout hasard, quelqu'un a déjà essayé cette plongée ?

    En attendant, je vais certainement partir avec mes dictionnaires et fouiller le web à la recherche d'une réponse ou me promener dans les sources System. Bindings.xxxx

    mais je suis preneur de toute idée
    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 029
    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 029
    Points : 40 927
    Points
    40 927
    Billets dans le blog
    62
    Par défaut
    Évidemment, je me réponds étant donné que j'ai une solution partielle

    Voici un début de 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
    procedure TForm4.Button1Click(Sender: TObject);
    var i,c : integer;
        abindcomp : TContainedBindComponent;
    begin
     for i:=0 to BindingsList1.BindCompCount-1 do
       begin
        memo1.Lines.Add(BindingsList1.BindComps[i].ControlComponent.Name);
        if sametext(BindingsList1.BindComps[i].ControlComponent.Name,'Stringgrid1') then
         begin
          for c :=0  to TlinkGridToDatasource(BindingsList1.BindComps[i]).Columns.Count-1 do
                memo1.Lines.Add(#9+
                   TLinkGridToDataSourceColumns(TlinkGridToDatasource(BindingsList1.BindComps[i]).Columns).Items[c].Header);
         end;
       end;
    end;
    qui me permet de vérifier ma "théorie"
    Nom : Capture.PNG
Affichages : 179
Taille : 24,5 Ko

    Je gage qu'un petit helper (une de mes nouvelles marottes), pour pouvoir accéder directement à un élément est dans le domaine du possible.

    Pourquoi est-ce que je me suis lancé là-dedans ? Il s'agit plus d'une question FMX (quoique, à vérifier) je voulais accéder au type de colonne d'une grille et changer certaines propriétés comme l'alignement dans la cellule (alignment) ou le type de colonne (ColumnStyle). J'ai désormais une piste bien chaude.
    Cela étant, j'ai fait le test avec des colonnes déclarées (clic droit sur la grille et ajout des colonnes).
    Bien sûr, cela ne fonctionne pas sans, il faut chercher une "bifurcation" quelque part
    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
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 029
    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 029
    Points : 40 927
    Points
    40 927
    Billets dans le blog
    62
    Par défaut
    Pour ceux qui auraient des doutes à propos de LiveBindings et de VCL, voici la version VCL de la même recherche

    Nom : Capture.PNG
Affichages : 153
Taille : 38,3 Ko
    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
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 029
    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 029
    Points : 40 927
    Points
    40 927
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    changer certaines propriétés comme l'alignement dans la cellule (alignment)
    pour FMX un petit helper suffit (valable pour FMX.StringGrid et FMX.Grid)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      TColumnHelper = class helper for TColumn
        procedure ApplyAlignment(Alignment : TTextAlign) ;
      end;
     
    {TcolumnHelper}
    procedure TColumnHelper.ApplyAlignment(Alignment: TTextAlign);
    begin
    Self.HorzAlign:=alignment;
    Self.Changed;
    end;
    utilisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StringGrid1.Columns[2].ApplyAlignment(TTextAlign.Trailing);
    Nom : Capture.PNG
Affichages : 147
Taille : 44,8 Ko
    à gauche au design, à droite au runtime après utilisation du bouton
    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

  5. #5
    Membre actif

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2021
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2021
    Messages : 138
    Points : 207
    Points
    207
    Par défaut
    Bonjour Serge,

    Citation Envoyé par SergioMaster Voir le message
    [...]Je sais, cela aurait peut-être plus sa place dans FMX, certains pensent que FMX implique automatiquement LiveBindings @Gilles, mais comme on peut très bien utiliser les LiveBindings avec VCL, je préfère poser la question dans la rubrique langage.[...]
    J'en profite vu que mon compte n'est toujours par fermé.

    Serait-ce de la persécution ? A moins que ce ne soit qu'un simple "prêté pour un rendu". En relisant après coup, j'ai un peu forcé la dose il est vrai, même si le fond de ma pensée est inchangé. Et encore plus quand je lis ta débauche de codes pour répondre finalement à des besoins très élémentaires. J'ai toujours l'impression que tu as des journées de 48 heures ! Cela doit être un phénomène 'ilien".

    Ceci dit, je regarde toujours avec intérêt tes travaux concernant les T(String)Grids sur FMX et je compare les approches. Pour les TGridColumns, j'ai les propriétés Alignment et Title.Aligment. Je ne me souviens pas en Delphi 7 et je n'en ai plus sous la main.

    Mon souci actuel est d'empêcher le déplacement de certaines colonnes à la souris (en général la ou les plus à droite tout en autorisant le déplacement des autres). J'ai réglé le problème en Lazarus dans les 3 OS et je mets cela sous le coude pour FMX... pour (vraisemblablement beaucoup) plus tard. En attendant, sous Windows 10, sous Ubuntu, sous Mint, sous Big Sur. Sous mac OS, comme on le constate sur la dernière vidéo, j'ai encore ce que je pourrais appeler un "effet de bord". Je l'ai réglé sous Windows et Nux... et visiblement le correctif Nux ne fonctionne 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
    {$IFDEF UNIX}{Side effect correction -α }
              aRect := CellRect(aCol, 0);
              if oldCol > acol then
              begin
                p := ClientToScreen(Point(aRect.Right, aRect.Top));
                SetCursorPos(p.X - 24, p.Y + Y);
              end
              else
              begin
                p := ClientToScreen(Point(aRect.Left, aRect.Top));
                SetCursorPos(p.X + 24, p.Y + Y);
              end;
              {Side effect correction -ω }
              {$ENDIF}
     
              { Colors and Exchanges  -α }
              Columns[oldCol - FixedCols].Color := clDefault;
              ExchangeColRow(True, min(oldCol, aCol), max(oldCol, aCol));
              Columns[aCol - FixedCols].Color := Lighter(clHighLight, 80);
              { Colors and Exchanges  -ω }
     
              {$IFDEF WINDOWS} {Side effect correction -α }
              aRect := CellRect(aCol, 0);
              if oldCol > acol then
              begin
                p := ClientToScreen(Point(aRect.Right, aRect.Top));
                SetCursorPos(p.X - 24, p.Y + Y);
              end
              else
              begin
                p := ClientToScreen(Point(aRect.Left, aRect.Top));
                SetCursorPos(p.X + 24, p.Y + Y);
              end;
              {Side effect correction -ω }
              {$ENDIF}
    Tu vois que la couleur cllHighLght est récupérée directement par Lazarus. Suite à une demande formulée sur le forum, pour résoudre automatiquement ce problème quelque soit l'OS et/ou la distribution utilisés, donc pour obtenir automatiquement ces dites "couleurs système", il m'a fallu appeler une bibliothèque Lazarus dans FMX sans utiliser les styles évidemment . L’éclaircissement de la couleur clHighLigt (pour visualiser le déplacement de la colonne sélectionnée) est obtenue par une petite fonction dédiée appelée Lighter(). Et enfin les 2 correctifs "Side effect correction" sont les mêmes pour Windows et Linux mais pas placés au même endroit. Pour l'un avant le ExchangeRowColumn, pour l'autre après. Reste à terminer le correctif pour macOS sinon on a l'effet que tu peux percevoir dans la vidéo Big Sur et à porter ce code pour le déplacement des lignes en bloquant celui des lignes du bas par exemple.

    A bientôt. Cordialement. Gilles

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 029
    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 029
    Points : 40 927
    Points
    40 927
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par HTML-Dev Voir le message
    Serait-ce de la persécution ? A moins que ce ne soit qu'un simple "prêté pour un rendu".
    Non , juste un clin d'œil, d'ailleurs, j'en ai un peu parsemé aussi dans le forum FMX.
    Par exemple, je n'ai pas abandonné sur les entêtes de colonnes
    https://www.developpez.net/forums/d2...itre-colonnes/ (une de tes demandes)
    inachevée encore, mais en bonne voie.

    Le boulot m'a aussi forcé à trouver une parade au manque de sélections de cellule des StringGrids (compréhensible à cause du manque de souris sur les mobiles, mais à peine )
    https://www.developpez.net/forums/d2...mx-selections/
    Je n'ai rien encore publié de définitif sur ce sujet, car je fais face à deux choix :
    - une solution à base de helpers (je m'en suis contenté pour le boulot comme d'habitude urgent)
    - une solution en surclassant la StringGrid
    De plus, mes diverses plongées m'ont montrées des voies non explorées et donc des optimisations possibles.

    D'ailleurs, une de ces plongées m'a permis de répondre à un truc loufoque (de mon point de vue) sur un forum anglophone : Ajout de case à cocher dans une cellule sélectionnée.
    Cela m'a même permis de faire une avancée sur l'obtention d'éléments de style (StyleObjects) qui, jusque-là, m'était récalcitrante.
    Nom : Capture.PNG
Affichages : 137
Taille : 39,2 Ko


    Et encore plus quand je lis ta débauche de codes pour répondre finalement à des besoins très élémentaires.
    Pas tant que ça, cette discussion est l'étude, j'aurais voulu faire mieux pour ce qui est de la recherche. Mais après, la rédaction d'un simple helper permet généralement un bon résultat

    J'ai toujours l'impression que tu as des journées de 48 heures !
    Détrompe-toi, je suis généralement HS de 12h00 à 16h00 et ferme la boutique aux alentours des 19h00. Cela étant, je tombe souvent du lit et me retrouve avec 2h00 de libres avant les appels entreprise.
    Cela doit être un phénomène 'ilien".
    ilais, j'y tiens, mais dans l'intimité, on peut m'appeler d'Yeu


    la couleur cllHighLght est récupérée directement par Lazarus. Suite à une demande formulée sur le forum, pour résoudre automatiquement ce problème quelque soit l'OS et/ou la distribution utilisés, donc pour obtenir automatiquement ces dites "couleurs système", il m'a fallu appeler une bibliothèque Lazarus dans FMX sans utiliser les styles évidemment .
    J'ai peu avancé sur le sujet "couleurs système", quelle bibliothèque Lazarus as-tu utilisé ? Si on peut obtenir celles-ci et comme tous les composants sont stylés, c'est plus un choix de style qu'autre chose car, maintenant que
    j'ai trouvé le moyen de changer des éléments de style au runtime, cela me semble possible.
    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
    Membre actif

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2021
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2021
    Messages : 138
    Points : 207
    Points
    207
    Par défaut
    Hello,

    désolé pour le "ilais". "D'Yeu" me semble un peu connoté

    Alors pour la récupération du Higlight dans une librairie compilée par lazarus c'est un peu compliqué. Je n'ai pas réussi à transférer directement la TColor de Lazaus dans Delphi par une fonction genre fColorHighLigt(): TColor. On aurait pu espérer. Alors j'ai préféré transmettre un hexa... avec une vieille subtilité toujours d'actualité
    L'autre difficulté est de pouvoir utiliser les bonnes unités dans une librairie Lazarus. clHighliht est liée à Graphics de LCL. C'est pourtant jouable. Jadis, quand j'utilisais des libraires Lazarus dans Windev, j'avais réussi à incorporer dans le programme Windev une TForm de Lazarus Oui, je sais...

    Mais en ce qui me concerne, la bonne solution serait de reprendre le problème à zéro avec FMX. Je n'aime pas utiliser les bibliothèques externes. Voila pourquoi j'utilise Unidac en Pascal et que je compile statiquement mes programmes Qt en y intégrant directement mes librairies clientes pour les accès aux bases mariaDB. Tout en un "exécutable". En réalité -je ne me plains pas- la cross-compilation est une plaie vers les autres OS Desktop. Ma version 10.4 ne compile que vers Big Sur et mon mac principal est évidemment Monterey. Un de mes clients a voulu se débarrasser de son MacBook Pro Intel 9 avec une RAM de 32 Go au motif que son disque dur était trop petit (et soudé). Je lui ai racheté, lui ai associé un disque dur crucial externe et 2 écrans 24 pouces et l'ai configuré pour le développement multi OS.
    Je l'ai rendu dual Boot : Window 10 - Monterey. Le Intel 9 est le dernier processeur utilisé par Apple qui le permet. Avec les M1 et suivants, on ne peut plus utiliser l'utilitaire Bootcamp pour le rendre dualboot.

    • Sous le boot Monterey, j'ai acheté une licence parallel pour installer Windows 10, Linux... sachant que -sans tenir compte de FMX qui n'est pas encore installé-, j'utilise les produits de PC SOFT dont les frameworks -comme Delphi- ne tournent que sous Windows. Bon cela fonctionne. Mais évidemment je suis moins "confortable" [écrans, RAM, même accès répertoire, et... sécurité] qu'avec l'OS natif pour tout ce qui concerne l'invité Windows.
    • Sur le boot Windows, j'ai installé Mint et Ubuntu sous VirtualBox et je me suis cassé les dents pour installer Big Sur. L'installation se passe bien mais il est impossible d'installer VBoxGuestAdditions. Or cet utilitaires est indispensable pour faire réaliser des échanges entre le "Host" et les "Guest" et aussi dérangeant, il est impossible d'ouvrir plein écran la fenêtre de l'invité. Par contre pour les Linux, RAS.
      Nom : delphi-220724-01..png
Affichages : 129
Taille : 64,6 Ko
    • Donc j'ai installé sous VMWare, un client Big Sur. C'est très facile à installer d'autant que le hardware est Apple Et c'est légal ! Hormis un problème de droits sur le dossier partagé entre tous les OS quand je compile un projet Lazarus qui y est placé cela fonctionne très bien.
      Nom : delphi-220724-02.png
Affichages : 133
Taille : 50,4 Ko


    Ce qui fait que je pourrai(s) contourner la limitation de la version 10.4 CE qui ne compile qu'avec le xCode de Big Sur... et pas celui de Monterey. Par contre, pas de cible Linux avec la CE. Rien que cela, cela ne me donne pas envie d'y aller. Pallier certains manques de FMX comme tu le fais, je pense en être capable. Mais donnant, donnant, surtout si tu sers de ressources. Donc pourquoi devrais-je me restreindre à Windows et mac OS [et en plus une version déclassée] ? Aussi bien sur le plan professionnel du développement, que du plan éthique, c'est un choix "curieux". Un peu penser que c'est une position orgueilleuse. Mais quand j'utilise un framework, je ne suis pas qu'un Client ! De plus, sur le matériel APPLE, si tu peux accéder à Big Sur, tu peux également installer Monterey et comme l'upgrade est gratuit et automatique... Le point de basculement pour le matériel Apple a été le passage à Big Sur. Voila pourquoi je me suis séparé à l'époque de mes mac Mini 2012 qui présentaient l'avantage de permettre d'augmenter la RAM (non soudée) et leurs disques durs DATA 2,5 pouces.

    Donc je reste dans l'expectative... C'est d'autant plus rageant qu'avec ce forum cela multiplie les possibilités. Mais je ne vais pas aller pleurer pour obtenir une version d'essai -que je peux imaginer complète (sans certitude) et ensuite pour obtenir un renouvellement mensuel comme le suggérait un des membres de ce forum sachant que je ne développais avec Delphi que pour mes Collègues Enseignants et mes Élèves... Et comme pour eux, mon statut de retraité ne m'autorise plus à bénéficier des versions Academic...
    Cordialement. Gilles

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 029
    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 029
    Points : 40 927
    Points
    40 927
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par HTML-Dev Voir le message
    désolé pour le "ilais". "D'Yeu" me semble un peu connoté
    tu oublies la minuscule, c'est elle qui donne le sel.

    Je n'ai pas réussi à transférer directement la TColor de Lazaus dans Delphi par une fonction genre fColorHighLigt(): TColor.
    C'est vrai que cette lacune est embêtante mais, facile à réaliser, je me demande pourquoi elle n'est pas en standard (de même que son inverse), à moins bien sûr qu'elle ne soit cachée sous un autre nom ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function ColorToAlphaColor(Value: TColor): TAlphaColor;
        var
          CRec: TColorRec;
          ARec: TAlphaColorRec;
        begin
          CRec.Color := Value;
          ARec.A :=$FF;
          ARec.B := CRec.B;
          ARec.G := CRec.G;
          ARec.R := CRec.R;
          Result := ARec.Color;
        end;
    en fin d'après-midi hier j'ai cherché un peu plus longuement cette histoire de couleurs système windows et la page Microsoft lue m'a laissé perplexe beaucoup de "Windows 10 or greater: This value is not supported." . J'ai tenté le "use GetSysColorBrush(nIndex)" mais comment dire
    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

  9. #9
    Membre actif

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2021
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2021
    Messages : 138
    Points : 207
    Points
    207
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    tu oublies la minuscule, c'est elle qui donne le sel.


    C'est vrai que cette lacune est embêtante mais, facile à réaliser, je me demande pourquoi elle n'est pas en standard (de même que son inverse), à moins bien sûr qu'elle ne soit cachée sous un autre nom ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function ColorToAlphaColor(Value: TColor): TAlphaColor;
        var
          CRec: TColorRec;
          ARec: TAlphaColorRec;
        begin
          CRec.Color := Value;
          ARec.A :=$FF;
          ARec.B := CRec.B;
          ARec.G := CRec.G;
          ARec.R := CRec.R;
          Result := ARec.Color;
        end;
    Comme tu le dis souvent "Poser la question sur le forum t'oblige à un effort de structuration du problème évoqué"... et par là-même, le clarifie et lui amène souvent une solution. C'est d'ailleurs là tout mon problème avec FMX : la structuration implique souvent trop de variables mal documentées.

    J'oubliais concernant les codes de la librairie : pour les codes Delphi [enfin permettant d'améliorer FMX], je suis réticent à les publier désormais. Pour Lazarus ou Qt, pas de problèmes. D'autant que mes programmes sont en général "Open Source".

    Citation Envoyé par SergioMaster Voir le message
    en fin d'après-midi hier j'ai cherché un peu plus longuement cette histoire de couleurs système windows et la page Microsoft lue m'a laissé perplexe beaucoup de "Windows 10 or greater: This value is not supported." . J'ai tenté le "use GetSysColorBrush(nIndex)" mais comment dire
    Pourquoi se limiter à Windows notamment dans l'approche initiale ? A moins d'être poussé dans mes retranchements, je fuis les approches typiquement Windows Api évidemment non transférables en Nux ou mac OS. J'ai donné ! J'ai dû traiter ce problème en Lazarus pour gérer la transparence des fenêtres, OS après OS. Le but était de permettre à mes Collègues d'annoter à partir de leur PC, leur écran projeté sur le vidéo projecteur de la salle, de permettre aux élèves d'enregistrer l'écran annoté à leur demande dans un répertoire local de l'appareil qu'ils utilisaient. L'annotation sur le poste de l’Enseignant devait être réalisée sans copies d'écran [vu dans plusieurs utilitaires rencontrés sur Internet et qui ne donnaient pas vraiment satisfaction] et en permettant de basculer de la feuille de calcul par exemple à l'annotation et vice-versa de façon totalement transparente et évidemment en maintenant toujours visible les annotations. FMX le permettait sous les 3 OS je crois (j'utilisais Delphi XE 7 Academic à l'époque). Finalement, le projet a abouti en Qt.

    En regardant les pages que j'ai visitées lors de ma dernière approche sur le sujet, j'en suis resté ici :
    FireMonkey does not have or use any system-defined colors, colors are explicit RGBA values. FireMonkey has color constants, but they are fixed RGBA values, not resolved by the OS at runtime. In short, system-defined colors are a Windows-specific feature of VCL only, not available in FireMonkey. Source
    Alors question :
    • Les propos doivent-ils être remis en cause ? A mon avis, non. Tout semble effectivement concordé.
    • Autres approches envisagées :
      • soit utiliser une librairie réalisée avec un langage qui permettra de récupérer cette valeur dans tous les OS utilisés. Cela suppose que le langage utilisé "wrappe" directement sur les objets graphiques natifs de l'OS. Lazarus convient mais il faut intégrer dans le source l'usage des bibliothèques permettant l'affichage d'une Tform. 2 solutions : une TForm "invisible", ou une TForm visible de lancement du programme comme un SplashScreen par exemple.
      • soit utiliser les API de l'OS. mais si ce que tu as lu se confirme, cette approche n'est plus envisageable


    En faisant une petite recherche tout de suite sur le Web : Petite curiosité (non testée) qui semble permettre de résoudre ultra-simplement un problème identique en Qt. Pas vu à l'époque. Je l'ai réglé autrement et de manière beaucoup plus compliquée. A voir quand même si c'est aussi simple ! Qt -comme Delphi maintenant- utilise son propre moteur graphique.

    Bonne fin de WE.

Discussions similaires

  1. recherche d'un élément
    Par alexei46 dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 22/11/2007, 13h23
  2. recherche d'un élément
    Par alexei46 dans le forum C
    Réponses: 9
    Dernier message: 18/11/2007, 23h29
  3. syntaxe de recherche d'un élément dans liste
    Par mussara dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/10/2006, 19h17
  4. Recherche d'un élément dans une liste triée (vitesse)
    Par Rodrigue dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 18/05/2006, 09h23
  5. [VB.NET][ADO.NET] Recherche d'un élément
    Par cyrcroix dans le forum Accès aux données
    Réponses: 3
    Dernier message: 26/10/2005, 08h40

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