AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

StringGrid Zeilen löschen

Ein Thema von lucy · begonnen am 27. Okt 2017 · letzter Beitrag vom 27. Okt 2017
Antwort Antwort
lucy

Registriert seit: 25. Okt 2017
76 Beiträge
 
Delphi XE7 Starter
 
#1

StringGrid Zeilen löschen

  Alt 27. Okt 2017, 10:16
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;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: StringGrid Zeilen löschen

  Alt 27. Okt 2017, 10:50
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 )

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.


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ß.
$2B or not $2B

Geändert von himitsu (27. Okt 2017 um 10:55 Uhr)
  Mit Zitat antworten Zitat
lucy

Registriert seit: 25. Okt 2017
76 Beiträge
 
Delphi XE7 Starter
 
#3

AW: StringGrid Zeilen löschen

  Alt 27. Okt 2017, 14:19
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
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: StringGrid Zeilen löschen

  Alt 27. Okt 2017, 14:28
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
lucy

Registriert seit: 25. Okt 2017
76 Beiträge
 
Delphi XE7 Starter
 
#5

AW: StringGrid Zeilen löschen

  Alt 27. Okt 2017, 16:56
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'
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: StringGrid Zeilen löschen

  Alt 27. Okt 2017, 17:02
Ist ja keine Methode, sondern eine normale Prozedur. Ich würde auch den übergebenen Parameter verwenden

SG.RowCount := SG.RowCount - 1;
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: StringGrid Zeilen löschen

  Alt 27. Okt 2017, 17:11
Hallo,
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
Heiko

Geändert von hoika (27. Okt 2017 um 17:24 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:30 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