Question

Je veux avoir CListCtrl.EditLabel () pour n’importe quelle colonne de la liste. Comment puis-je implémenter une telle fonctionnalité?

Était-ce utile?

La solution

C’est faisable, mais cela nécessite un peu de travail avec des clics de souris et des événements de focus.

En résumé, vous interceptez le message du bouton gauche de la souris et le convertissez en détails de hit de cellule (c'est-à-dire un index de ligne et de colonne).

Avec ces détails de cellule, vous ne pouvez pas déterminer la taille et l'emplacement de la cellule d'affichage de liste, ni la valeur de texte qu'elle contient.

Créez maintenant un contrôle CEdit directement sur cette cellule en utilisant les détails de taille et d'emplacement de l'étape précédente et donnez-lui la valeur textuelle de la cellule.

La dernière étape consiste à gérer le focus et les événements de saisie au clavier pour le CEdit afin que les détails du texte du CEdit puissent être replacés dans la cellule de la vue liste.

Cela nécessite pas mal de codage, mais une fois terminé, cela fonctionne bien comme alternative au contrôle de grille.

Autres conseils

N'essayez pas avec CListCtrl.

Utilisez le Contrôle de grille MFC . Nous la déployons avec succès dans une application standard. Il propose des options de modification, de case à cocher, de rotation, etc. sur place pour toutes les cellules, ainsi que les en-têtes de colonne et de ligne, la taille et le développement automatiques, les couleurs et le glisser-déposer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top