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 VCL Delphi Discussion :

[ListView] erreur pour tester le contenu des colonnes


Sujet :

Composants VCL Delphi

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 20
    Points : 25
    Points
    25
    Par défaut [ListView] erreur pour tester le contenu des colonnes
    Salut,

    J'utilise une ListView en mode vsReport. Elle comporte 9 colonnes. Je voudrais tester la présence du contenu des colonnes lorsque l'on sélectionne une ligne.

    Donc voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure Bt1Click(Sender: TObject);
    begin
           if ListView.Selected.Subitems[8] <> '' then ShowMessage(ListView.Selected.Subitems[8])
           else ShowMessage('Rien...');
    end;
    Dès que je clique sur le bouton pour lancer cette procédure, j'ai un message d'erreur : "Project xxx raised exception class EStringListError with message 'List index out of bounds (8)'..."

    Cependant, en testant la 5ième colonne par exemple, cela marche parfaitement. Une idée ?

  2. #2
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    Oui.

    Ce n'est pas parce que le TListView a 9 colonnes déclarées, que les listes SubItems auront d'office 8 éléments... en fait, les listes SubItems sont vides par défaut, donc toute lecture déclenchera une erreur. C'est une sale blague dont j'ai moi-même été victime.

    Alors, soit tu ajoutes systématiquement 8 chaînes vides à la propriété SubItems à chaque fois que tu ajoutes une ligne, soit tu gère l'exception, soit tu modifies un peu ton code en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ( ListView.Selected.Subitems.Count > 8 ) and ( ListView.Selected.Subitems[8] <> '' )
       then ShowMessage(ListView.Selected.Subitems[8])
       else ShowMessage('Rien...');
    Par ailleurs, même le code que je te donne la est douteux, car les Subitems s'affichent à partir de la deuxième colonne !!! Autrement dit, si tu as 9 colonnes, l'indice maximal d'un SubItem visible sera de 7 = Colonne - 1 colonne - 1 (indice de base zéro).

    D'ailleurs, il est possible, à l'inverse, d'avoir plus de SubItems que seulement ceux visibles. C'est pratique pour associer des informations cachées à des lignes dont l'ordre est susceptible de changer...

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 20
    Points : 25
    Points
    25
    Par défaut
    Merci... Je crois bien que je vais les remplir avec des chaînes vides. Je viens de faire un test et ça l'air ok.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/01/2012, 11h37
  2. Quelle solution pour tester la gestion des blocages ?
    Par Nonoleplongeur dans le forum HyperFileSQL
    Réponses: 9
    Dernier message: 09/02/2011, 01h08
  3. [SOAP Proxy] outil pour tester le contenu XML des message SOAP
    Par evan.caballero dans le forum Services Web
    Réponses: 3
    Dernier message: 26/01/2010, 20h57
  4. [OC]Aligner le contenu des colonnes d'une table à gauche
    Par Doctor Z dans le forum Adaptive Server Enterprise
    Réponses: 3
    Dernier message: 08/11/2007, 22h07

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