Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Stringgrid und Delete (https://www.delphipraxis.net/32586-stringgrid-und-delete.html)

Anthauri 25. Okt 2004 18:22


Stringgrid und Delete
 
Ein Montagshallo !

nachdem ich meine Suche unter "stringrid" und "delete" ohne passende Antwort abgeschlossen habe möchte ich mein Problemchen kurz hier darstellen. ggf. hat jemand eine Idee.


Ich habe ein Stringgrid, aus dem ich eine Zeile löschen möchte.

Hierfür dürfte der Befehl passend sein.

Delphi-Quellcode:
Stringgrid1.Rows[zu_loeschende_zeile].Delete(Index);
Aus der Hilfe entnehme ich, dass der Index exakt die Korrespondierende Anzahl Spalten der Zeile angeben muß.

Mein Testgrid enthält 2 Zeilen mit je zwei Spalten.

Ich habe bei dem Index alle Werte zwischen Null und Vier ausprobiert und auch die zu löschende Zeile mit Null und Eins als Festwert versucht.


Die Meldung ist stets:
EIvalidGridOperation. Es können keine Zeilen des Tabellengitters gelöscht oder eingefügt werden.

Kann mir ggf. jemand erklären wo der Fehler liegt, bzw erklären was der Index denn dann vielleicht tut?

Niko 26. Okt 2004 14:44

Re: Stringgrid und Delete
 
Hi,

das geht so nicht.

Zumindest bis Delphi 4 ist es überhaupt nicht möglich, bestimmte Zeilen aus einem Stringgrid zu löschen. Ich glaube aber mal gelesen zu haben, dass das bei späteren Versionen geht. Dann darfst du aber trotzdem nicht das Delete der Rows-Eigenschaft verwenden, das nur aus der aktuellen Zeile die entsprechende Spalte löschen und damit ein ziemliches Chaos erzeugen würde. Wenn vorhenden, müsste die passende Methode etwa StringGrid.DeleteRow oder ähnlich heißen.

Falls es so was nicht gibt, hilft nur das Umkopieren aller anderen Zeilen nach oben und das Verringern von RowCount.

ibp 26. Okt 2004 15:31

Re: Stringgrid und Delete
 
so sollte es gehen...(nicht getestet)

Delphi-Quellcode:
procedure tform1.delrow(rownr:word);
var n:word;
begin
  with stringgrid1 do
  begin
    row:=rownr;
    if row<rowcount-1 then
      for n:=rownr to rowcount-2 do
        rows[n]:=rows[n+1];

    rowcount:=rowcount-1;
  end;
end;

Anthauri 26. Okt 2004 17:33

Re: Stringgrid und Delete
 
Vielen Dank für die Antworten, :-D

ich habe das Ganze jetzt auch in etwa so gelöst.

Aufwendig war es ja nicht, aber es hätte ja sein können, dass es eine Programmseitige lösung gibt, die ich nur nicht verstanden habe.
Es gibt in Delphi für mich halt noch viel zu entdecken.

grayfox 27. Okt 2004 00:43

Re: Stringgrid und Delete
 
hallo anthauri!

hier findest du jede menge tipps zum thema Stringgrid

@niko:
Zitat:

Zumindest bis Delphi 4 ist es überhaupt nicht möglich, bestimmte Zeilen aus einem Stringgrid zu löschen. Ich glaube aber mal gelesen zu haben, dass das bei späteren Versionen geht
wer behauptet denn sowas? schau mal bei den schweizern vorbei, dort wirst du vom gegenteil überzeugt.

mfg, stefan


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz