CListCtrl-Problem

CodeFatal

Erfahrenes Mitglied
Moin moin,

schon wieder ich :)

Hoffe dies ist nur ne kurze Frage;-]

Wie kann ich bei einem CListCtrl eine Zelle markieren und bearbeiten?

In der ersten Spalte ist das kein Problem nur die danach wollen einfach nicht.

Danke für eure Hilfe

Gruß Michael
 
Ich fürchte, das gibt's standardmäßig nicht.
Das müßtest Du selber implementieren, indem Du den Mausklick abfängst (NM_CLICK-Nachricht), ermittelst, welches Item angeklickt wurde (iItem-Member der von NM_CLICK übergebenen Struktur) und dieses dann selektieren (SetSelectionMark(...)).
 
Hallo,
hab jetzt bei Codeguru was gefunden. Ist zwar keine GoldLösung, aber das Suchen nach der Lösung hat bereits zuviel Zeit gekostet, als das man das für die Anwendung verantworten könnte...

Hab jetzt die OnLbuttonDown überladen und anschließend die Funktion SubItemHitTest verwendet. Dann ist das Feld zwar nicht markiert. aber in dieser speziellen Anwendung will ich eh nur das entsprechende Feld zwischen zwei Werten toggeln lassen.

Mit deinem Lösungsansatz sollte das aber in Zukunft besser klappen.

Gruß Michael
 
Sorry, falls ich da was falsch verstanden habe - aber geht das nicht einfach so?

Code:
m_Listelement.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);

Also hier in dem Beispiel werden die Gitternetzlinien eingeschaltet und automatisch eine ganze Zeile Selektiert.

Oder hab ich da was falsch verstanden?
 
Moin Moin,

ich wollte eigentlich nur eine Zelle, keine Zeile markieren.
Das ist aber auch nur optisch. Mich interessiert eigentlich nur die Änderung des Wertes und da der nur zwischen "ja" und "nein" toggeln kann und das ganze nur nen kleines Tool ist um gewisse Arbeitsabläufe zu automatisieren hab ich da jetzt auch nicht mehr weiter gemacht.

In diesem Fall ist eher das Ergebnis als ein optimierter Weg das Ziel :D

Gruß Michael
 
Also im CListCtrl ist das ja ganz schön blöd wenn es um die SubItems geht und deren Bearbeitung.
Ich habe mir da mal so geholfen:
Zuerst FULLROWSELECT als Eigenschaft, danach wenn eine Zelle angeklickt ist, die Mauskoordinaten abfragen und prüfen, ob es sich im Bereich der benötigten Spalte befindet.
Trifft dies zu, kannst du an genau diese Stelle (die Zeile selber weißt du dann ja) eine Edit Box, oder wie du schreibst, eine ComboBox zur Auswahl von "ja", "nein" usw. hinsetzen. Das sieht dann zumindest mal auch nach was aus. Ist zwar nicht ne tolle Methode, aber funktioniert auch gut, obwohl etwas Mühe beim Berechnen der Koordinaten und so weiter.
Bei mir hat das aber gut ausgesehen!!
 
Zurück