Code Verständnisproblem
-
Achso, aber wenn ich mir den Funktionskopf angucke wird mir schlecht. Was für Parameter muss ich den der Funktion übergeben??
-
Geht das eigentlich auch einfacher? Ich will nämlich eigentlich nur markierte Datensätze löschen in dem ich auf den Button Löschen klicke
-
Also, ich hab dir mal was von mir zurechtgestutzt:
// Ist was markiert? POSITION pos = m_lscControl.GetFirstSelectedItemPosition(); if (pos == NULL) { // Nichts gewählt, Fehlermeldung oder nix machen } else { while (pos) { // Index des Items holen und gleich weitersetzen int nItem = m_lscControl.GetNextSelectedItem(pos); // nItem ist der Index des Eintrags } }
Jetzt besser?
-
Also wie ich das verstehe sind in nItem dann die martkierten Datensätze die ich dann in dem ich nItem auf 0 setze löschen kann oder??
-
Weißt du, was ein Index ist?
Hast du schon mal mit einem Listcontrol, einer Combobox, einer Listbox oder einfach nur einem Array gearbeitet?Bitte ganz ehrlich, damit ich weiß, wo ich mit Erklären anfangen muss.
-
Ich bin in dem Bereich Neuling das ist meine erste CListCtrl die ich in meinem Leben geschrieben habe , ich würde sogar sagen das ich wenn ich mir hier die Beiträge angucke im ganzen MFC - Bereich noch Neuling bin
-
Okay, also ganz vorne anfangen... muss man ja wissen.
Also, so ein Listcontrol kannst du dir grob vorstellen wie ein Array.
So ein Array hat ja viele Einträge (z.B. Strings), auf die du mit Hilfe einer Nummer zugreifen kannst. Diese Nummer ist sowas wie eine Hausnummer, der Index.Um bei den Häusern zu bleiben...
Du gehst jetzt also eine Strasse lang und guckst, welche Häuser blau (markiert) sind.
Das erste ist Nummer 3. Wenn du das nun 0 nennst, ist es immer noch da. Es ist auch immer noch die 3 - aber du stehst wieder am Anfang der Straße und wunderst dich tierisch, wo denn das Haus hin ist.Wie würde man es im richtigen Leben machen? Richtig, man gibt die Adresse einem Abrißunternehmen. Das heißt in diesem Fall DeleteItem. (Guck mal in die MSDN.)
Nun gehst du also die Straße lang (die Schleife) und bei jedem blauen Haus zückst du dein Handy und bestellst das Abrißunternehmen für die Hausnummer (nItem).
Jetzt klarer?
-
Aso ja klar gutes Beispiel, aber dann bräuchte ich doch eigentlich kein nItem?? Kann ich nicht direkt aus der liste also : CListCtrl.DeleteItem löschen??
-
Silvercreast schrieb:
Aso ja klar gutes Beispiel, aber dann bräuchte ich doch eigentlich kein nItem?? Kann ich nicht direkt aus der liste also : CListCtrl.DeleteItem löschen??
Und welches?
-
Hä??? Wie welches welches Beispiel?? Das mit dem das wenn ich das markierte gefunden habe und wieder von neu anfang das es logisch ist das der Compiler nicht mehr weiss wo das Item ist. Aber kann ich nicht direkt aus der list löschen??
-
Wenn du nItem nicht hast, woher weisst du, welches Item du löschen willst?
-
Ich kann aber nur auf.DeleteItem zugreifen wenn ich es wie folgt schreibe
CListCtrl.DeleteItem ???? Was muss ich denn dann ändern
-
Wie hast du diesen Satz gemeint?
Silvercreast schrieb:
Aso ja klar gutes Beispiel, aber dann bräuchte ich doch eigentlich kein nItem??
Und zeig doch bitte deinen Code, wenn du eine Frage dazu hast, ich kann wirklich nicht hellsehen.
-
Das ist eigentlich eine Antwort und eine Frage in einem das Achso ja war darauf bezogen das ich es verstanden habe und das andere die neue frage meine frage ist
[cpp] // Ist was markiert? POSITION pos = m_ListDataFound.GetFirstSelectedItemPosition(); if (pos == NULL) { // Nichts gewählt, Fehlermeldung oder nix machen MessageBox("Es wurde kein Eintrag zum Löschen ausgewählt","Fehler",MB_OK); } else { while (pos) { // Index des Items holen und gleich weitersetzen int nItem = m_ListDataFound.GetNextSelectedItem(pos); // nItem ist der Index des Eintrags [b] //m_ListDataFound.DeletItem; würde gehen // nItem ???? Wie kann ich das Item löschen ??? [/b] } }[/cpp]
-
//m_ListDataFound.DeletItem; würde gehen
Zeig mal wie.
-
Ich mein jetzt rein von der Syntax. Also das ich bei der list DeleteItem auswählen kann
-
Und? Was musst du der Funktion so als Parameter geben?
-
Was ich der Funktion als Parameter übergeben muss?? Ähm nichts das setht doch alles in meiner CtrlList drin
-
Und das kompiliert?
Hast du den Befehl denn schon mal in der MSDN nachgeschlagen?Weil, wenn ich mal
m_ListDataFound.DeletItem();
so angucke, würde ich mich fragen: Welches Item denn nun?
-
Jetzt funktioniert das FAST : m_ListDataFound.DeleteItem(nItem); Nur er speichert das nicht ab er löscht es aber wenn ich das Programm nochmals aufrufe dann ist der gelöschte Eintrag wieder da.