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 :

[FMX TListView] Saisie données multiples via code


Sujet :

Composants FMX Delphi

  1. #1
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    1 758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1 758
    Points : 5 667
    Points
    5 667
    Par défaut [FMX TListView] Saisie données multiples via code
    "rame... rame... rameur... ramez! " chantait Alain Souchon

    Bonjour à tous!

    Le bon Souchon résume fort bien ma situation: Pour une app multi-plateforme, je veux afficher l'évolution d'une série de mesures. Je veux donc avoir une ListView (ou un ListBox???) qui affiche chaque mesure sur une même ligne avec 3 valeurs "Libellé de la mesure" et 2 valeurs mesurées. En fonction des valeurs mesurées, je dois changer la couleur de la totalité de la ligne.

    Et là, je tourne en rond, sans savoir vraiment quelle est la meilleure solution.

    1. J'ai adapté un TlistView pour avoir dans l'objet Item du Tlistview 3 TTextobjectApparances

    2. En testant le TListView avec comme source de données un TPrototypeBindSource, cela ressemble un peu à ce que j'aimerai avoir.


    Mes questions:

    1. Est-ce que j'ai raison de vouloir utiliser TListview plutôt que TListBox?

    2. J'arrive à remplir le TListView via un code du genre "ListItem := ListView2.Items.Add; ListItem.Text :=..." mais est-ce que je peux saisir via code une valeur dans chacun des 3 TTextobjectApparances (J'arrive à le faire via LiveBinding mais je ne peux pas utiliser LiveBinding dans mon cas)?

    3. Est-il possible d'ajouter à TListview un Header qui donne un titre aux 3 "colonnes" du TListView (Pour l'instant, j'ai ajouter un THeaderItem sur ma form mais cela va poser un problème pour que le titre des 3 colonnes s'adapte correctement aux 3 valeurs affichées dans le TListView lors du redimensionnement dynamique de l'interface en fonction des dimensions de l'écran de l'appareil de l'utilisateur)

    Merci pour votre avis

  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 934
    Points
    40 934
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Pour moi TListview implique données et livebindings, en tout cas pas de saisie dedans, TListbox un peu de tout (dont de la saisie) et beaucoup plus manuel.
    Donc, sans trop visualiser ce que tu veux, je partirais sur du TListBox avec Style (ou même TScrollBox avec Frame)
    Pour le tlistbox voir ce que j'ai pu écrire sur les styles toujours d'actualité
    Un seul truc concerne la vitesse d'affichage, plus il y a d'items plus l'ajout devient lent du moins certains l'ont dénoncé. Deux astuces pour y pallier :
    tout d'abord ne pas oublier le ListBox.BeginUpdate / Listbox.EndUpdate
    Mémoriser la "position" du dernier item+hauteur de l'item et positionner le nouvel item top à cette valeur. (il faudrait que je retrouve la vidéo)

    Reste ensuite le TVerticalScrollbox (TlistBox en dérive) et les frames pour tous "allergiques" aux styles deux vidéos à voir dans les coderages (je crois que c'est le XII)
    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
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    bon alors, sur les quelques projets que j'ai fait sous FMX, je suis très vite partie sur de la construction d'éléments dans une scrollbox...du style un TRectangle parent avec des TText, TGlyph, etc selon les besoins...ce n'est pas forcément le plus indiqué si tu as des millions d'enregistrements, mais sur des listes de tailles raisonnable c'est pratique et tu es libres de faire ce que tu veux sans contrainte
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    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 934
    Points
    40 934
    Billets dans le blog
    62
    Par défaut
    Quand je parlais des vidéos dans les coderages (finalement c'était celui de 2019 )
    Ta vidéo Paul mais aussi celle de Adriano Santos

    Quant à la première vidéo que je croyais dans le chanel de Jaques Nascimento (lista sob demanda)
    ce n'est pas vraiment celle-ci que j'avais en tête
    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 extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    1 758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1 758
    Points : 5 667
    Points
    5 667
    Par défaut
    Salut à tous,

    Les lecteurs de ce forum qui ont un lien privilégié avec Embarcadero pourraient faire une proposition intelligente:

    Quand on se retrouve avec un composant qui se nomme de la même manière mais qui fonctionne de manière totalement différente en VCL et en FMX comme c'est le cas pour les TListBox/TListView, il serait judicieux de nommer le composant de manière différente (style: TListBox et TFMXListBox).

    Tu cherches à faire la moindre manipulation avec un TListBox en FMX? Pas de problème, tu fais une recherche sur le web avec les mot clés magiques... Tu trouves la solution à ton problème... Tu implémente la solution dans ton code... Tu compiles... Tout ce passe bien, mais... Cela ne fonctionne pas!!!

    Parce que... Ben, ton TListBox FMX se comporte de manière totalement différente d'un TListBox VCL!!!

    Parce que lorsque tu fais ta recherche avec le mot clé "TListBox", tu auras 99% des réponses qui concernent le TListBox VCL!!! Et comme la doc officielle est merdique , cela userait les nerfs d'un anglais le plus flegmatique de la perfide Albion.

  6. #6
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    en même temps il est facile d'ajouter FMX dans ta recherche...mais peut-être moins facile de trouver des réponses
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    1 758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1 758
    Points : 5 667
    Points
    5 667
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    en même temps il est facile d'ajouter FMX dans ta recherche...mais peut-être moins facile de trouver des réponses
    Je te laisse le soin de faire le test dans Google avec des recherches en ajoutant le mot magique "FMX", tu sera surpris de voir le résultat...

  8. #8
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    1 758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1 758
    Points : 5 667
    Points
    5 667
    Par défaut
    Je suis parti sur le conseil de SergioMaster: TListBox avec des Styles mais nouvelle surprise...

    Prenons l'exemple d'un TListBox dans lequel il y a 10 Items, on obtient à l'écran un truc du genre:

    Mesure 1 10 15
    Mesure 2 4 3
    ...
    Mesure 10 4 7

    Mais subtilité, le TListBox n'est pas suffisamment grand pour afficher les 10 lignes... Pas de problème, on va "scroller" en vertical avec son petit doigt pour visualiser les lignes...

    Magique... Dès qu'un élément sort de la zone affichée, les données sont remplacées par... les info présentes... dans le concepteur de style: La première ligne "Mesure 1 10 15" devient par exemple "Text {vide} {vide}" et c'est la même chose pour toutes les lignes qui sortent à un moment donné de la zone affichée (une ligne qui reste dans la zone affichée garde ses valeurs).

    Démonstration par l'image:

    1° Avant scroll...
    Nom : Avant_scroll.png
Affichages : 113
Taille : 22,6 Ko

    2° Après avoir scrollé vers le bas et être retourné sur la 1ère ligne:
    Nom : Apres_scroll.png
Affichages : 117
Taille : 19,2 Ko

    Diantre... Est-ce que cela ne ressemblerait pas au style tel que présenté dans le concepteur de style?
    Nom : Style.png
Affichages : 113
Taille : 9,4 Ko

    Est-ce que quelqu'un a un avis sur la source du problème?

    Merci d'avance

  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 934
    Points
    40 934
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    je ne suis jamais tombé sur ce genre de chose, "my guess" : un additem de trop

    Cela écrit, je croyais que tu voulais pouvoir modifier les données directement dans la liste, je ne vois pas de TEdit qui traine ce n'est donc qu'un premier essai avec style ?
    Parce que là, ce que tu montres, un TListView (apparence dynamique) ferait la même chose
    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
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    1 758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1 758
    Points : 5 667
    Points
    5 667
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    je ne suis jamais tombé sur ce genre de chose, "my guess" : un additem de trop
    Que veux-tu dire par un "additem de trop"?

    Dans mon test, je complète mon TListBox sur un "button.onclick" (création des ListBox.Item avec application du style) et ensuite je me limite à un scroll vertical des éléments du TListBox à l'aide du doigt sans qu'aucune autre ligne de code soit activée. La ligne qui sort de la zone affichée sur un scroll et ensuite que je fais revenir dans la zone affichée par un scroll dans le sens inverse voit ses données "perdues"... Etant sur Rio avec les derniers correctifs, je vais essayer de compiler sur Sidney pour voir si cela change qqchose.

    Citation Envoyé par SergioMaster Voir le message
    Cela écrit, je croyais que tu voulais pouvoir modifier les données directement dans la liste, je ne vois pas de TEdit qui traine ce n'est donc qu'un premier essai avec style ?
    Parce que là, ce que tu montres, un TListView (apparence dynamique) ferait la même chose
    Je n'ai pas de edit parce que la modification dynamique dans la liste ne vient pas d'une intervention manuelle mais du code (je dois interroger un réseau de capteurs déportés qui sont interrogés un à un. Quand la mesure retournée a changé, il y a modification de la ligne affichée. J'ai simulé cette action de modification d'une valeur spécifique dans le TListBox à l'aide d'un bouton et cela fonctionne.


    Est-ce que traiter le problème en 2 étapes serait la solution à ton avis? Par 2 étapes, je pense 1° Collecter une à une mes mesures et les stocker dans un Clientdataset, puis ensuite indiquer à un TListView comme source de données le clientdataset via livebinding.

  11. #11
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    1 758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1 758
    Points : 5 667
    Points
    5 667
    Par défaut
    EUREKA!

    J'ai trouvé la raison des données effacées sur un scroll vertical....

    Tu mets ton TListBox directement sur la form et... tout est normal! Tu peux scroller sans perte des données!

    Tu mets ton TListBox dans le TabItem d'un TabControl et... BUG: Le TListBox perd ses données sur les scroll!!


    On fait quoi quand on a une app qui nécessite un TabControl???

    Est-ce un bug connu?

    Est-ce que l'on a le même problème avec un TListView?

  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 934
    Points
    40 934
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Anselme45 Voir le message
    Est-ce que traiter le problème en 2 étapes serait la solution à ton avis? Par 2 étapes, je pense 1° Collecter une à une mes mesures et les stocker dans un Clientdataset, puis ensuite indiquer à un TListView comme source de données le clientdataset via livebinding.
    Alors là je vote pour. Les données dans une TFDMemTable serait le mieux, et un livebindings sur la TListview (item en DynamicAppearance)
    Tu mets ton TListBox dans le TabItem d'un TabControl et... BUG: Le TListBox perd ses données sur les scroll!!
    Et on fait quoi quand on a une app qui nécessite un TabControl???
    Là idem j'ai un gros doute, il faudrait que je fasse un essai mais ça demande du temps. J'utilise des tabcontrols à foison (quoique maintenant que j'ai vu ce que l'on pouvait faire avec TFrameStand il est possible que je change d'idée) je n'ai jamais eu ce souci, (au pire un item légérement coupé du haut)
    Etant sur Rio avec les derniers correctifs, je vais essayer de compiler sur Sidney pour voir si cela change qqchose.
    je suis encore sur Rio (après la petite déception récente avec REST et Sidney, heureusement)
    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 extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    1 758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1 758
    Points : 5 667
    Points
    5 667
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Là idem j'ai un gros doute, il faudrait que je fasse un essai mais ça demande du temps. J'utilise des tabcontrols à foison (quoique maintenant que j'ai vu ce que l'on pouvait faire avec TFrameStand il est possible que je change d'idée) je n'ai jamais eu ce souci, (au pire un item légérement coupé du haut)
    Concernant TListBox, je peux t'assurer qu'il y a aucun doute! J'ai repris un projet "poubelle" où j'avais testé la manipulation via code des TListBox et où je n'avais pas l'histoire de la perte de données sur un scroll. Ne comprenant pas, j'ai constaté que la seule différence entre le projet avec et sans perte de données dans le TListBox était l'usage d'un TabControls. Donc, je prends mon projet qui fonctionne, y ajoute un TabControl et déplace mon TListBox de la form dans le TabControl... Résultat? Sans aucune autre modification, le TListBox perd les données des lignes cachées lors d'un scroll! CQFD

    Maintenant, j'espère que le TListView ne se comporte pas de la même manière...

    Citation Envoyé par SergioMaster Voir le message
    je suis encore sur Rio (après la petite déception récente avec REST et Sidney, heureusement)
    Vu que j'utilise également REST, je suis curieux... Quel est le problème qui t'a fait revenir de Sidney à Rio?

  14. #14
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    1 758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1 758
    Points : 5 667
    Points
    5 667
    Par défaut
    @SergioMaster

    J'ai repris mon test "TListView avec comme source de données un TPrototypeBindSource"...

    Avec le TListView placé sur la form, aucune perte de données après des scroll,

    J'ai placé mon TListView dans un TabControl et... Aucune perte de données après des scroll.


    Conclusion:

    1° Normal que tu n’aies jamais constaté de problème

    2° TListBox dans un TabControl? A bannir!

  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 934
    Points
    40 934
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Anselme45 Voir le message
    Vu que j'utilise également REST, je suis curieux... Quel est le problème qui t'a fait revenir de Sidney à Rio?
    voir cette discussion, non spécifique à FMX
    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
    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 934
    Points
    40 934
    Billets dans le blog
    62
    Par défaut
    J'ai voulu en avoir le cœur net et donc réaliser ce petit test
    Nom : Capture.PNG
Affichages : 99
Taille : 5,1 Ko
    avec ce code simplet
    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
    procedure TForm122.Button1Click(Sender: TObject);
    var i : integer;
        aItem : TListBoxItem;
    begin
      ListBox1.BeginUpdate;
      ListBox2.BeginUpdate;
      for i := 1 to 30 do
        begin
          AItem:=TListBoxItem.Create(Listbox1);
          AItem.Parent:=ListBox1;
          AItem.Height:=30;
          AItem.StyleLookup:='MyItemStyle';
          AItem.ApplyStyleLookup;
          AItem.StylesData['titre.text']:='Item '+I.ToString;
          AItem.StylesData['detail.text']:=i.ToString;
          AItem.StylesData['valeur.text']:=(i*2).tostring;
     
          AItem:=TListBoxItem.Create(Listbox2);
          AItem.Parent:=ListBox2;
          AItem.Height:=30;
          AItem.StyleLookup:='MyItemStyle';
          AItem.ApplyStyleLookup;
          AItem.StylesData['titre.text']:='InTab '+I.ToString;
          AItem.StylesData['detail.text']:=i.ToString;
          AItem.StylesData['valeur.text']:=(i*2).tostring;
     
        end;
      ListBox1.EndUpdate;
      ListBox2.EndUpdate;
    end;
    je ne constate pas le phénomène décrit
    Après scroll des 2 listes
    Nom : Capture_1.PNG
Affichages : 103
Taille : 112,3 Ko
    sroll up de la liste dans le tabcontrol
    Nom : Capture_2.PNG
Affichages : 101
Taille : 53,9 Ko

    Constation : Il faudrait que je me re-penche sérieusement sur les Styles, impossible de faire ce que décrit dans mon tuto, AItem.Text:='un titre'; m'affichait un glyphe étrange
    Conclusion :
    - TListBox dans un TabControl ça fonctionne.
    - peut-être que si tu avais mis ton code de remplissage on n'en serait pas là et compris AMHA où tu t'es planté
    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

  17. #17
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    1 758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1 758
    Points : 5 667
    Points
    5 667
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Conclusion :
    - TListBox dans un TabControl ça fonctionne.
    - peut-être que si tu avais mis ton code de remplissage on n'en serait pas là et compris AMHA où tu t'es planté
    Mon échec est dur à avaler... Mon ego en prend un coup!

    J'ai testé ton code et force est de constater que tu as raison!

    Effectivement mon code d'insertion des données est différent: Ton "AItem.StylesData['titre.text']:='Item '+I.ToString;" prend dans mon code la forme suivante:

    ItemText := ListBoxItem.FindStyleResource('Reference') as TText;
    if Assigned(ItemText) then ItemText.Text := 'toto';

    Cela semble fonctionner sauf sur les scroll quand le TlistBox est dans un TabControl...

    Merci encore pour ton aide!

  18. #18
    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 934
    Points
    40 934
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Anselme45 Voir le message
    Effectivement mon code d'insertion des données est différent: Ton "AItem.StylesData['titre.text']:='Item '+I.ToString;" prend dans mon code la forme suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      ItemText := ListBoxItem.FindStyleResource('Reference') as TText;
      if Assigned(ItemText) then ItemText.Text := 'toto';
    Cela devrait fonctionner aussi, c'est juste une manière différente prenant moins de lignes de coder.
    ce qui est "dur à avaler" pour moi est que j'étais sûr que je pouvais directement fixer la valeur text (en lieu et place de titre) comme je l'avais indiqué dans l'encadré bleu du chapitre
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Générer du code HTML en fonction des données MySQL via PHP
    Par Nicolas Eggs dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 08/08/2016, 16h24
  2. SQLite : Saisie des données dans le code JAVA
    Par kopbuc dans le forum Android
    Réponses: 2
    Dernier message: 16/01/2016, 22h30
  3. saisie donnée via 2 formulaires
    Par deeperpaul dans le forum Langage
    Réponses: 1
    Dernier message: 22/04/2011, 18h42
  4. Saisie données via fenêtre popup
    Par raf64flo dans le forum Macro
    Réponses: 3
    Dernier message: 11/04/2008, 18h03
  5. Accés au donnés sur Excel via Code vba Access
    Par sakia dans le forum VBA Access
    Réponses: 1
    Dernier message: 24/11/2007, 17h46

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