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

C++Builder Discussion :

[TListView] Utilisation de SortType ?


Sujet :

C++Builder

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Par défaut [TListView] Utilisation de SortType ?
    Bonjour,

    Comment bien utiliser dans le code, SortType d'une TlistView ?
    J'ai fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TListView->SortType = stText;
    Mais j'ai une erreur :
    [C++ Erreur] Unit1.cpp(20): E2015 Ambiguïté entre 'stText' et 'Listactns::stText'
    Merci
    Fred

  2. #2
    Membre éprouvé Avatar de monnoliv
    Homme Profil pro
    Opticien-ébéniste: lunettes de WC
    Inscrit en
    Août 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Opticien-ébéniste: lunettes de WC

    Informations forums :
    Inscription : Août 2003
    Messages : 139
    Par défaut
    Salut,

    C'est curieux, Je n'ai pas ce problème (BCB4).

    Essaie quand même de forcer le type par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     ListView1->SortType = (TSortType) stText;
    BàT,

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Par défaut
    Salut,

    Toujours la meme erreur !
    Bizarre ! J'ai bcb6

    Fred

  4. #4
    Membre éprouvé Avatar de monnoliv
    Homme Profil pro
    Opticien-ébéniste: lunettes de WC
    Inscrit en
    Août 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Opticien-ébéniste: lunettes de WC

    Informations forums :
    Inscription : Août 2003
    Messages : 139
    Par défaut
    Au fait, c'est bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ListView1->SortType = stText;
    que tu fais, et pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TListView->SortType = stText;
    BàT,

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Par défaut
    Salut,

    non, c'et bien la bonne syntaxe que je fais.
    ListView1->SortType = stText;

  6. #6
    Membre éprouvé
    Avatar de Alacazam
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 88
    Par défaut
    Bonsoir,

    Je n'ai malheureusement pas BCB 6 pour tester ...
    Cependant, une question similaire d'ambiguité avait déjà été posée ; et, de mémoire, Gilles Louise (me semble-t-il ) avait conseillé de mettre en commentaire la déclaration qui ne te conserne pas dans le .h en question.

    Sinon, étant donné que ce doivent être des types énumérés, tu pourrais regarder dans l'include en question à quelle valeur correspond stText, et mettre cette valeur numérique à la place.
    (Ce sera pas "parfaitement portable" comme code, mais ça devrait marcher je pense.)

    Méthode non testée ...
    Bonne Chance
    Mathieu

  7. #7
    Membre Expert
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par défaut
    Bonjour,

    j'ai effectivement parlé de ce genre de problème (bonne mémoire Alacazam) mais pas spécifiquement pour le composant ListView que je n'ai jamais commenté. Toujours est-il qu'il y a un conflit entre deux types d'énumération. Cela vient du fait qu'au moment de l'ajout de certains éléments pour une version nouvelle de C++ Builder, un conflit apparaît parce qu'un même mot-clé a été utilisé. C'est ce qui explique que ça peut encore marcher pour une version antérieure mais pas pour une version nouvelle où le problème est apparu.

    Pour régler ce problème, il faut trouver le fichiers incriminé, en l'occurrence il s'agit de Listactns.cpp dans le répertoire Include/VCL. Éditez ce fichier, recherchez la chaîne stText, vous tombez sur une ligne contenant une énumération du type TListItemsSortType.

    Si maintenant vous cherchez les fichiers où il y a la chaîneTListItemsSortType, vous trouvez qu'il y a le précédent et comtrls.hpp. Ces deux fichiers contiennent tous deux cette ligne d'où le conflit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enum TListItemsSortType { stNone, stData, stText, stBoth };
    Il suffit donc de modifier le nom de ces mots-clés, par exemple de rajouter un 1 à la fin de chacun d'eux dans l'un des deux fichiers par exemple dans Listactns.cpp.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enum TListItemsSortType { stNone1, stData1, stText1, stBoth1 };
    Le conflit a disparu, vous pouvez maintenant écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListView1->SortType = stText;
    Ce n'est ni la première fois ni la dernière qu'on débogue les headers de C++ Builder.

    À bientôt
    Gilles

  8. #8
    JEG
    JEG est déconnecté
    Membre chevronné
    Avatar de JEG
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 211
    Par défaut
    si j'ai bien compris, dans son cas c'est beaucoup plus simple, il lui suffit de mettre dans son code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListView1->SortType = Listactns::stText;
    La nécessité de mettre "Listactns::" devant est apparue avec BCB6

    (Sinon Alcazam, j'avais conseillé à quelqu'un de mettre en commentaire dans le fichier .h de la jAPI concerné, le code qui ne correspondait pas entre "Listactns::stText" et "stText", ce qui a finalement été résolu par des directives de pécompilation opur que cela puisse marché partout, c'était donc peut être de moi que tu parlais :))

  9. #9
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Par défaut
    Salut a tous,

    SUPER !!!!
    Vous avez resolu mon probleme !

    MERCI
    Fred

  10. #10
    Membre éprouvé
    Avatar de Alacazam
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 88
    Par défaut
    Bonsoir,

    J'en profite pour demander un avis sur cette proposition ...
    Citation Envoyé par Alacazam
    Sinon, étant donné que ce doivent être des types énumérés, tu pourrais regarder dans l'include en question à quelle valeur correspond stText, et mettre cette valeur numérique à la place.
    Est-ce "acceptable" ou vraiment pas propre ?
    (ça me choque pas trop a priori, c'est comme affecter 0 à un bool ...)

    Merci,
    Mathieu

  11. #11
    JEG
    JEG est déconnecté
    Membre chevronné
    Avatar de JEG
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 211
    Par défaut
    disons que si borland décide de rajouter par exemple stTruc devant stText (qui va donc passer en position 1 dans le type enum) dans C++ builder 7, ton application continuera de marcher comme avant, mais pour le peu que tu aies un peu oublié comment tu as codé ca, tu vas te demander pourquoi ca ne trie plus par ordre alphabétique alors que tu n'as rien changé dasn ton code, mais que tu as juste fait un changement de version de C++ builder...

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/05/2015, 11h31
  2. Exemple simple d'utilisation d'un TListView
    Par DelphiCool dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 08/02/2013, 20h58
  3. Clignotement d'un TListView en utilisant Repaint()
    Par FredericB dans le forum C++Builder
    Réponses: 9
    Dernier message: 22/11/2007, 19h34
  4. [TListView.WorkAreas] Comment les utiliser ?
    Par ARDILLER dans le forum Composants VCL
    Réponses: 5
    Dernier message: 05/09/2007, 12h17
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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