Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   StringGrid Zeilen löschen (https://www.delphipraxis.net/194198-stringgrid-zeilen-loeschen.html)

lucy 27. Okt 2017 09:16


StringGrid Zeilen löschen
 
Hallo,

möchte gerne einzelne Zeilen löschen.

Wobei die oberste Zeile (Überschrift) nicht markiert werden soll, wenn das Grid leer ist.
Ist das möglich?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
 var
  i: integer;
begin
 for i :=StringGrid1.Row to StringGrid1.RowCount-2 do StringGrid1.Rows[i].Assign(StringGrid1.Rows[i+1]);
  StringGrid1.RowCount := StringGrid1.RowCount - 1
end;

himitsu 27. Okt 2017 09:50

AW: StringGrid Zeilen löschen
 
Erste Zeile nicht selektieren:
FixedRows gefällt dir nicht?
Und hast du schon OnSelect.... gefunden? (da kann man das auch gleich wieder ändern, was einem nicht gefällt :zwinker:)

Tipp, siehe:
Delphi-Quellcode:
procedure TCustomGrid.DeleteRow(ARow: Longint);
begin
  MoveRow(ARow, RowCount - 1);
  RowCount := RowCount - 1;
end;
MoveRow und DeleteRow sind protected und mußt du dir einfach erstmal nur sichtbar machen, um sie zu nutzen.
Ich weiß, es ist bissl schwachsinnig, da der User dieses per Drag&Drop nutzen kann, es aber programmseitig etwas versteckt und standardmäßig nicht direkt zugänglich ist. :stupid:


Und sicherheitshalber aufpassen, ob überhaupt etwas selektiert ist. (z.B. Row<0 aka -1)
Man beachte auch, dass bei MultiSelekt-Komponenten die "Selection" nicht immer mit dem "Focus" übereinstimmen muß.

lucy 27. Okt 2017 13:19

AW: StringGrid Zeilen löschen
 
Es soll durch einen doppelt Click im StringGrid, die ausgewählte Zeile gelöscht werden.
Außer wenn die erste Zeile doppelt geklickt wird!

Wie schütze ich die erste Zeile im Grid?

Delphi-Quellcode:
procedure TForm1.StringGrid1DblClick(Sender: TObject);
   var
  i,j :integer;
begin
 if MessageDlg('Daten wirklich löschen?', mtWarning, [mbyes, mbno], 0) = mrYes then
  StringGrid1.RowCount := StringGrid1.RowCount - 1;

  StringGrid1.FixedRows:= 1;
  StringGrid1.FixedColor := clred;

 StringGrid1.Cells [1,0] := ' ';
 StringGrid1.Cells [2,0] := 'Unixzeit';
 StringGrid1.Cells [3,0] := 'Address';
 StringGrid1.Cells [4,0] := 'Status';
 StringGrid1.Cells [5,0] := 'Exit';
 StringGrid1.Cells [6,0] := 'Short';
end

p80286 27. Okt 2017 13:28

AW: StringGrid Zeilen löschen
 
Delphi-Quellcode:
procedure DeleteStringgridLine(var SG:tstringgrid;sgln: integer);
begin
  if sgln>Untergrenze_fürs_löschen then begin
    lösche.......
  end;
end;


procedure TForm1.StringGrid1DblClick(Sender: TObject);
    var
  stringgridLineNo : integer;
begin
  StringgridLineNo:= wieauchimmermandarankommt;
  if MessageDlg('Daten wirklich löschen?', mtWarning, [mbyes, mbno], 0) = mrYes then
   DeleteStringgridLine(StringGrid1,StringgridlineNo);
So ähnlich würde ich das angehen, ggf. gleich eine eigene Klasse aufbauen.

Gruß
K-H

lucy 27. Okt 2017 15:56

AW: StringGrid Zeilen löschen
 
Habe hier einen Fehler? StringGrid1 ist doch bekannt!

Delphi-Quellcode:
procedure DeleteStringgridLine(var SG:tstringgrid;sgln: integer);
begin
  if sgln > 1 then
   begin
        StringGrid1.RowCount := StringGrid1.RowCount - 1;
  end;
end;
[dcc32 Fehler] Unit1.pas(45): E2003 Undeklarierter Bezeichner: 'StringGrid1'

mkinzler 27. Okt 2017 16:02

AW: StringGrid Zeilen löschen
 
Ist ja keine Methode, sondern eine normale Prozedur. Ich würde auch den übergebenen Parameter verwenden

Delphi-Quellcode:
SG.RowCount := SG.RowCount - 1;

hoika 27. Okt 2017 16:11

AW: StringGrid Zeilen löschen
 
Hallo,
Delphi-Quellcode:
procedure DeleteStringgridLine(var SG:tstringgrid;sgln: integer);
Wenn ich Zeile 5 löschen will, wird trotzdem die letzte Zeile gelöscht.
Einfach RowCount-1 reicht nicht, die Lösung steht aber auch schon weiter oben.

oder die hier:
https://stackoverflow.com/questions/...stringgrid-row


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