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

Lazarus Pascal Discussion :

[Linux 32] Sélectionner une ligne d'une ListView en mode Report et en récupérer l'index : mission impossible ? [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut [Linux 32] Sélectionner une ligne d'une ListView en mode Report et en récupérer l'index : mission impossible ?
    Bonsoir,

    Tout est dans le titre, alors ce soir je fais court et simple.
    La ListView est remplie dans l'EDI, et correctement affichée en mode design comme au runtime, ràs.

    Le code, réduit à sa plus simple expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.lvSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean);
    begin
      Edit7.Text := Item.Caption +' '+ IntToStr(Item.Index); // l'Item.Index c'est du grand nawak !
    end;
    et voilà le résultat (la ligne en surbrillance indique là où j'ai cliqué) :

    Nom : 5rows.gif
Affichages : 490
Taille : 31,4 Ko

    Une idée pour avoir "0" au lieu de "4" quand je clique sur la 1re ligne ?

    Question subsidiaire : un bon point pour celui ou celle (quoique, je n'en ai jamais vu ici) qui devine ce sur quoi je bosse en ce moment,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  2. #2
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello JPT,
    moi je n'ai pas ton souci en Lazarus 1.8 PVO (presque version officielle) .
    Quelle version de Lazarus utilises-tu et comment crées-tu ta listview et tous ses éléments. Le plus simple serait que tu nous mettes en pièce jointe tout le code source de ton projet ou un projet simplifié avec la partie listview.
    Ami calmant, J.P (sans T)
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  3. #3
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Bon sang mais c'est bien sûr !

    Mais où avais-je la tête ? J'avoue que j'étais un peu fatigué, hier soir, et que j'ai zappé ma pire ennemie, la non-compatibilité Windows-Linux !

    Allez hop !
    Encore un projet dont l'esthétique est foutue en l'air, la listview étant inutilisable sous Linux/Gtk2 alors qu'elle fonctionne très bien sous Windows (merci les machines virtuelles )

    Tiens, "ils" m'ont gâché le week-end, et si vous saviez comme j'en ai marre, sans compter le temps perdu...

    Bon, je vous mets le zip quand même, histoire de dire, mais je me demande si, lorsqu'elle sortira, cette 1.8 du pays d'Arles (six mois tout rond depuis la rc1), je vais migrer (comme je l'avais dit)...
    À quoi bon ?
    demo4forum.zip

    Bon week-end, merci de m'avoir aiguillé,

    EDIT : solution de contournement et de rattrapage :

    supprimer la méthode "OnSelectItem" et rajouter
    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
    type // obligatoire, quand je rajoute "commctrl" dans les uses, le fichier n'est pas trouvé...
      LV_HITTESTINFO = record
           pt : TPOINT;
           flags : UINT;
           iItem : longint;
        end;
      _LV_HITTESTINFO = LV_HITTESTINFO;
      TLVHITTESTINFO = LV_HITTESTINFO;
      PLVHITTESTINFO = ^LV_HITTESTINFO;
     
    procedure TForm1.lvClick(Sender: TObject);
    var
      pt: TPoint;
      li : TListItem;
      lvHitInfo: TLVHitTestInfo;
    begin
      pt := lv.ScreenToClient(Mouse.CursorPos); // les coordonnées DANS le contrôle
      li := lv.GetItemAt(pt.x, pt.y);
     
      if li <> nil then begin
        FillChar(lvHitInfo, SizeOf(lvHitInfo), 0) ;
        lvHitInfo.pt := pt;
        // 4153 : identifiant d'un message dont j'ai zappé le nom, inconnu car commctrl absent
        if lv.Perform(4153, 0, LParam(@lvHitInfo)) <> -1 then
          Caption := li.Caption +' '+ IntToStr(li.Index);
      end;
    end;
    Ouuuuuuuuuuuuuuuuuuuuf !
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  4. #4
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Salut,

    La version finale 1.8 ne devrait plus trop tarder

    Question subsidiaire : un bon point pour celui ou celle (quoique, je n'en ai jamais vu ici) qui devine ce sur quoi je bosse en ce moment,
    A vu de nez je dirais sur la colorimétrie, le contrôle des couleurs avec Les illuminants normalisés et températures de couleur
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  5. #5
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Yep !
    Citation Envoyé par BeanzMaster Voir le message
    La version finale 1.8 ne devrait plus trop tarder
    Ils peuvent se la garder : quand j'ai regardé la liste des problèmes corrigés, je n'ai rien vu concernant la listview, alors bon, je ne vais pas me lancer dans un upgrade qui ne m'apporterait rien,
    Bon, je ferai sans doute des tests dans une machine virtuelle pi je viendrai vous raconter,


    Citation Envoyé par BeanzMaster Voir le message
    A vue de nez je dirais sur la colorimétrie, le contrôle des couleurs avec les illuminants normalisés et températures de couleur

    Et je te dis pas comment je pète les plombs, le nez dans "La gestion des couleurs pour les photographes, les graphistes et le prépresse" de J. Delmas chez Eyrolles, un pavé de 600 pages avec plein de valeurs concernant la (couleur de la) banane (si si ! ) en fonction des espaces colorimétriques, et je ne trouve pas exactement les mêmes valeurs que lui, ça m'énerve !
    une histoire de choix de matrices, je pense...
    Bon, je retourne chez Lindbloom.

    Le bon point pour toi,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  6. #6
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Pour la colorimetrie du coté de chez egf's tu as ce lien sinon tu peux aussi regarder du coté de la librairie LCMS pour la gestion des ICC entre autre.
    Autre conseil fais tes calculs en Double voir en Extend au lieu de Single
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  7. #7
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    Autre conseil fais tes calculs en Double voire en Extend au lieu de Single
    T'inquiète pas, c'est bien comme ça que je fais.

    Merci pour le lien.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  8. #8
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    Citation Envoyé par Jipété Voir le message
    Encore un projet dont l'esthétique est foutue en l'air, la listview étant inutilisable sous Linux/Gtk2 alors qu'elle fonctionne très bien sous Windows (merci les machines virtuelles )
    Effectivement il semble y avoir un bug sous linux pour la sélection dans une listview . Mais si tu utilises le clavier à la place de la souris pour faire la sélection cela fonctionne .
    Petite question subsidiaire : Pourquoi n'utilises-tu pas une stringgrid ?
    Ami calmant, J.P (sans T)
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  9. #9
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Merci pour tes tests et ton retour
    Citation Envoyé par jurassic pork Voir le message
    Effectivement il semble y avoir un bug sous linux pour la sélection dans une listview . Mais si tu utilises le clavier à la place de la souris pour faire la sélection cela fonctionne .
    On est propres !

    Et en fait, bien que n'étant pas un fan inconditionnel de la souris, force est de reconnaître qu'elle est parfois bien utile : si je lance un calcul à chaque fois qu'une ligne est sélectionnée, il sera plus simple, plus confortable, plus agréable de comparer les lignes 1 et 4 à la souris plutôt qu'au clavier, qui obligerait à passer par les lignes 2 puis 3.

    Citation Envoyé par jurassic pork Voir le message
    Petite question subsidiaire : Pourquoi n'utilises-tu pas une stringgrid ?
    Je ne sais plus trop : je l'avais envisagé et puis...
    Pi j'aime bien la FixedRow légèrement arrondie en tête de grille,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  10. #10
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    Pour ton problème, j'ai trouvé l'explication :
    I had to use the selected parameter. The event gets called multiple times, with the old item and selected=False, and the actual item with Selected=ON.
    When coming from Delphi, it happens.
    et la solution peut être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.lvSelectItem(Sender: TObject; MItem: TListItem;
      Selected: Boolean);
    begin
      if Selected then Caption := MItem.Caption +' '+ IntToStr(MItem.Index); 
    end;
    Ami calmant, J.P (sans T)
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  11. #11
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    Pour ton problème, j'ai trouvé l'explication :

    et la solution peut être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.lvSelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    begin
      if Selected then Caption := Item.Caption +' '+ IntToStr(Item.Index); 
    end;
    sans le "M" ! (d'où qu'il sort ? )

    Et moi je dis chapeau ! Respect ! Profil bas les gars, regardez, voilà un grand maître !

    Toutes mes félicitations, ça allège bien la bidouille que j'avais pondue à partir de lvClick avec ScreenToClient(Mouse.CursorPos) et GetItemAt(pt.x, pt.y);.

    Bien joué, J.P, et grand merci !
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/05/2017, 12h54
  2. Réponses: 3
    Dernier message: 18/01/2015, 18h30
  3. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  4. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  5. Réponses: 4
    Dernier message: 04/03/2009, 15h23

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