Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zeilenbereich aus einer StringGrid entfernen (https://www.delphipraxis.net/148420-zeilenbereich-aus-einer-stringgrid-entfernen.html)

paulus11 1. Mär 2010 17:53


Zeilenbereich aus einer StringGrid entfernen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo liebe Delphianer,

ich habe ein klitzekleines Problem mit meiner StringGrid, das wie folgt aussieht:

In meiner StringGrid befinden sich verschiedene Einträge, die in der ersten Spalte nummeriert sind. (siehe Anhang)
Jetzt möchte ich, dass es für den Benutzer möglich ist, einzelne Zeilen aus der StringGrid zulöschen.
Da ich aber gerne die Nummerrierung in der 1. Spalte der einzelnen Datensätze beibehalten möchte, sollen nur die Informationen hinter der Nummer z.B. "2" (in der 2. Zeile) gelöscht werden und automatisch die Einträge hinter der Nummer z.B. "3" (in der 3. Zeile) hinter die Nummer 2 "rutschen". Die Nummer "3" soll dann natürlich verschwinden, da hinter ihr kein Eintrag steht.

--> Veranschaulicht ist das auch noch einmal im Anhang

Ich weiß nicht ob das ein sehr schwieriges Unterfangen ist, was ich mir da ausgedacht habe, aber ich wollte einfach mal anfragen, ob mir dort jemand vllt. einen Ansatz geben könnte, um das Problem zu lösen.

Herzlichsten Dank schon einmal im voraus.:)

paulus11 2. Mär 2010 18:37

Re: Zeilenbereich aus einer StringGrid entfernen
 
Hat keiner einen kleinen Tipp für mich, oder habe ich mein Problem zu kompliziert erklärt?:/
Würde mich wirklich über jede kleine Hilfe riesig freuen!

Salazriel 2. Mär 2010 18:49

Re: Zeilenbereich aus einer StringGrid entfernen
 
Der Textinhalt der 1.Spalte ist ja immer die Nummer der entsprechenden Zeile, also
Delphi-Quellcode:
StringGrid1.cells[0,ZeilenNummer]:=IntToStr(ZeilenNummer+1); //da von 0..rowcount-1
Und die OH gibt

Delphi-Quellcode:
StringGrid1.rows[NummerDerLöschZeile].clear
zum löschen, sowie

Delphi-Quellcode:
StringGrid1.rows[NummerDerLöschZeile-1]:=StringGrid1.rows[NummerDerLöschZeile];
zum kopieren her. (Musst dann aber noch StringGrid1.cells[1,ZeilenNummer] aktualisieren)

himitsu 2. Mär 2010 18:55

Re: Zeilenbereich aus einer StringGrid entfernen
 
zwei schleifen

- einmal i+1 bis Zeilenanzahl-1 (Y)
- und Spalte 1 bis Spaltenanzahl-1 (X)

i = zu löschende Zeile

Und dabei kopierst du die Inhalte jeweiles um eine Zeile nach oben, ab der Zeile unter/nach der zu löschenden Zeile.

Kopiert wird alles außer der ersten Spalte, somit bleibt diese Nummerierung erhalten.
Oder du kopierst alles und baust dann die Nummerierung neu auf.

Nach dem Kopieren wird dann die letze Zeile entfernt.

henk 2. Mär 2010 19:03

Re: Zeilenbereich aus einer StringGrid entfernen
 
hm, wenn ich dich richtig verstanden habe, würde ich einfach neu nummerieren....


vielleicht hilft dir das:

Delphi-Quellcode:

//--------prozedur für zeilennummern aktualisieren -----------------------------
procedure tform2.stringgridRowNumber (stringgrid: tstringgrid);
var
i: integer;
begin
  For i := 0 to StringGrid.rowCount - 1 do
  StringGrid.Cells[0,i]:= inttostr(i); //  zeilennumern anzeigen
  StringGrid.Cells[0,0]:= inttostr(StringGrid.rowCount - 1)// zeilensumme anzeigen

end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:57 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