TStringGrid Rows Move ???
-
Morchn,
da die CBuilder Hilfe zum Thema Move in einem TStringGrid sehr dürftig ist, dürfte das Problem wohl bekannt sein.
Was kann ich also machen?Jeder kompilierbare Versuch endete mit der Meldung(Exception):
'Es können keine Zeilen des Tabellengitters gelöscht oder eingefügt werden'. Prozeß wurde angehalten...
for( i = 0; i < 5; i++ ) // i = Cols < ColCount DataGrid->Rows[i]->Move( row, row+1 );
Rows == Cols??? So wären es die Strings des Grids, oder?
Wo ist mein Denkfehler?
Oder eine andere Lösung?! Es geht um das Verschieben von Zeilen in einem StringGrid.
Da muss es doch was gebenthx & grüssle
-
Hallo,
Dein Move verschiebt keine Zeilen sondern tauscht Strings in Spalten der gewählten Zeile. Der Index in Rows ist ein Zeilenindex. Wie kommst du da auf Spalten?
Meines Wissens nach gibt es keine fertige Funktion zum Tauschen von zwei zeilen. Du brauchst doch eigentlich nur die Inhalte aller Spalten der beiden Zeilen zu tauschen (swap hilft hier).
-
TSringGrid::Rows::Move bezieht sich auf die Position der Strings in der Zeile (Rows ist vom Typ TStringList), nicht auf die Position der Zeile im Grid.
TStringGrid hat eine Funktion MoveRow, die aber standardmässig protected ist. Um sie nutzen zu können musst du von TStringGrid ableiten und die Funktion public machen.
Quelle: http://entwickler-forum.de/showthread.php?t=21588
-
ok, dann eben swappen
Danke euch beiden
grüssle