[eVc++] CListCtrl -> Wie id oder Nummer eines markierten Elements herausfinden ?
-
Hallo User,
ich habe in meinem Dialog ein ListControl. Die Daten welche in diesem anzeigt werden, sind abhängig von einer Auswahl aus einer ComboBox. Also angenommen :
ComboBox :
- Eintrag 1
- Eintrag 2ListControl :
Bei Auswahl "Eintrag 1" erscheint =>
- Datensatz 1
- Datensatz 2
- Datensatz 3Bei Auswahl "Eintrag 2" erscheint =>
- Datensatz 4So, wenn ich jetzt Eintrag 1 auswähle und dann im ListControl Datensatz 1 anklicke, bräuchte ich die id dieses Eintrages im ListControl. Funktioniert ja soweit mit diesem Code alles wunderbar :
POSITION pos = m_ListDaten.GetFirstSelectedItemPosition(); int nItem = (m_ListDaten.GetNextSelectedItem(pos)) + 1;Ich lasse praktisch auf die ItemNumber noch eins draufzählen, da der index mit 1 anfangen soll. Wenn ich jetzt aber Eintrag 2 auswähle, und ich die id des Datensatzes 4 haben will, ist die id dort wieder 1, weil er ja denkt dass er nur ein Datensatz im ListControl hat. Ich bräuchte aber dort die id 4, sprich er müsste mir die noch vorhanden Datensätze dazuzählen.
Denn ich hole die Daten aus einer Datenbank, wo die id ja fortlaufend ist und ich das ganze später vergleiche muss und deshalb genau die gleiche id brauche, wie sie in der Datenbank steht.
Also :
Datensatz 1 in der Datenbank id 1, im List Control 1
Datensatz 2 in der Datenbank id 2, im List Control 2
Datensatz 3 in der Datenbank id 3, im List Control 3
Datensatz 4 in der Datenbank id 4, im List Control 1Geht praktisch nur darum, dass ich eine Methode bräuchte, mit der ich die aktuelle id des Datensatzes im ListControl abfragen kann.
War das einigermaßen verständlich ?

-
das ausgewählte element bekommst du mit .getcursel() der controlvariable, das könntest du ja dan drauf zählen
-
Schon, aber das gibts nur für die CComboBox und CListView, nicht aber für CListCtrl.
-
Würde auch nicht helfen. Du kannst mit SetItemData jedem Eintrag einen Wert zuordnen, den du mit GetItemData wieder rausholen kannst. So kannst du die IDs ablegen.
-
Genauso wie MFK es gepostet hat, habe ich es jetzt verwirklicht. Funktioniert wunderbar. Bin eben noch sehr neu in C++, deswegen muss ich öfters mal nachfragen

-
Das SetItemData gibts übrigens auch für CComboBox und CListBox.
Ich nutze es bei allen 3, habe mir aber mittlerweile je eine eigene Klasse abgeleitet, weil es nervte, ständig das selbe zu tippen.Jetzt haben alle ein GetSelectedData (und ein SelectData) und fertig.
