Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi TStringGrid Move (https://www.delphipraxis.net/196712-tstringgrid-move.html)

mcinternet 11. Jun 2018 16:55

TStringGrid Move
 
Hallo die Gemeinde,

ich möchte ganz einfach in einem TStringGrid eine Zeile löschen.
Dazu cleare ich die Zeile, möchte danach den Rest von unten moven und die letzte Zeile löschen. Nur leider kommt schon beim xGrid.Rows.Move[x,y] immer ne Exception hoch:

Es können keine Zeilen des Tabellengitters gelöscht oder eingefügt werden.


mh ....

Hat da wer nen Tipp?

Fixed Rows und Cols ist auf 0

Gruss

mcinternet

mkinzler 11. Jun 2018 17:26

AW: TStringGrid Move
 
Ich würde es per Helper realisieren:

Delphi-Quellcode:
type
  TCustomGridHelper = class helper for TCustomGrid
  public
    procedure DelRow(ARow: Integer);
  end;

procedure TCustomGridHelper.DelRow(ARow: Integer);
begin
  Self.DeleteRow(ARow);
end;

Dennis07 13. Jun 2018 23:47

AW: TStringGrid Move
 
Class helpers sind einfach genial! :D Weiß echt nicht mehr, wie ich damals ohne auskam... :lol:

hoika 14. Jun 2018 08:15

AW: TStringGrid Move
 
Hallo,
Zitat:

immer ne Exception hoch
Die da wäre ?

KodeZwerg 14. Jun 2018 08:30

AW: TStringGrid Move
 
So klappts ohne Helfer
Delphi-Quellcode:
procedure DeleteSGRow(MyGrid: TStringGrid; iRow: Integer);
var
  i: Integer;
begin
  for i := iRow to MyGrid.RowCount - 2 do    // kopiere alles unterhalb iRow
   MyGrid.Rows[i].Assign(MyGrid.Rows[i + 1]); // nach oberhalb von iRow
  MyGrid.RowCount := MyGrid.RowCount - 1;    // entferne letzten Eintrag
end;
Beispiel-Aufruf
Delphi-Quellcode:
DeleteSGRow(MyStringGrid, MyStringGrid.Row);
für aktuelle Selektion oder
Delphi-Quellcode:
DeleteSGRow(MyStringGrid, 10);
um Zeile 10 zu löschen.

hoika 14. Jun 2018 09:23

AW: TStringGrid Move
 
Hallo,
übernimmt das Assign auch das Objects-Property?
Ich glaube nicht, weiss aber nicht.

KodeZwerg 14. Jun 2018 10:50

AW: TStringGrid Move
 
Soweit hab ichs nicht getestet, Ziel für mich war es eine Zeile wegzubekommen ohne Helfer. Wie man sieht überschreibe ich lediglich alles und lösch das letzte.


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