Delphi, Spalte in einem StringGrid löschen/einfügen

Mai 28th, 2007 Autor: Phillip Kroll -

Die TStringGrid Komponente stellt keine Möglichkeit zur Verfügung um Spalten oder Zeilen mitten im Grid zu löschen. Folgende Methode ermöglicht das löschen von Spalten:

function DeleteCol( Grid : TStringGrid; Col : Integer ) : boolean;
var
I, j : Integer;
begin
Result := False;
if ( Col < 0 ) or ( Col >= Grid.ColCount ) then Exit;
for I := Col to Grid.ColCount - 2 do
for J := 0 to Grid.RowCount - 1 do
Grid.Cells[ I, J ] := Grid.Cells[ I + 1, J ];
Grid.ColCount := Grid.ColCount - 1;
Result := True;
end;

Eine Mögliche Anwendung wäre zum Beispiel das Löschen aller markierten Spalten in einem StringGrid:

procedure TForm1.Spaltelschen1Click(Sender: TObject);
var
I, left, right: integer;
begin
left := StringGrid.Selection.left;
right := StringGrid.Selection.right;
for I := 0 to right - left do
DeleteCol( StringGrid, left );
end;

Um eine neue leere Spalte in ein StringGrid einzufügen hilft folgende Funktion weiter:

function InsertCol( Grid : TStringGrid; Col : Integer ) : boolean;
var
I, j : Integer;
begin
Result := False;
if ( Col < 0 ) or ( Col >= Grid.ColCount ) then Exit;
Grid.ColCount := Grid.ColCount + 1;
for I := Grid.ColCount - 1 downto Col + 1 do
for J := 0 to Grid.RowCount - 1 do
if I <> Col + 1 then
Grid.Cells[ I, J ] := Grid.Cells[ I - 1, J ]
else
Grid.Cells[ I, J ] := '';
Result := True;
end;

Bisher keine Kommentare für diesen Eintrag...

0 response(s) to Delphi, Spalte in einem StringGrid löschen/einfügen

    Kommentare sind für diesen Beitrag geschlossen.