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.
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.
enum TListItemsSortType { stNone1, stData1, stText1, stBoth1 };
Le conflit a disparu, vous pouvez maintenant écrire :
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
Partager