TStringGride löschen
-
Ich will aus ner Tabelle eine Zeile löschen. Dafür gibt es ja die Funktion Delete (int) leider geht es bei mir nicht
Versuch 1:
Anzeige->Rows->Delete(i);
Compiler meckert:
[C++ Fehler] Editorquell.cpp(191): E2193 Zu wenige Parameter im Aufruf von '_fastcall TStringGrid::GetRows(int)'
Versuch 2:
Anzeige->Rows[i]->Delete(i);
Compiler meckert nimmer, aber wenn man hinkommt, kommt ein Fenster:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Editor.exe ist eine Exception der Klasse EInvalidGridOperation aufgetreten. Meldung: 'Es können keine Zeilen des Tabellengitters gelöscht oder eingefügt werden'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------Also wie muss ich es richtig machen? Ich weis nichtmehr weiter.
Stratege993
-
Siehe FAQ, Abschnitt StringGrid.
-
Sehr lustig, das Problem bei der FAQ ist blos entstanden da er BCB 1.0 oder so hat. Da gibts die Funktion noch net, das ist bei mir aber nicht das Problem. Ich wies nicht wie ich sie anspprechen soll.
Und die Funktion ein 2. mal zu schreiben ist doch wirklich sehr sinnlos, wenn sie schon vorhanden ist.Stratege993
-
Das hat nichts damit zu tun, dass es die Funktion im BCB1 nicht gibt. Man kann einfach mit delete keine Zeile rauslöschen. Außerdem solltest du dir vielleicht mal die Hilfe zu TStrings::Delete anschauen. Da wirst du feststellen, das der Parameter von delete den zu löschenden String innerhalb des TStrings-Objektes anzeigt.
Mit deiner Zeile versuchst du also in der Zeile i die Zelle der Spalte i zu löschen, was natürlich nicht gehen kann.
Nimm die Variante aus der FAQ.
-
Aha, jetzt verstehe ich, die Funktion macht garnet was ich will
. Das hätte Jansen auch dazuschreiben können.
Stratege993
-
Ein Blick in die Hilfe hätte auch genügt.