Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Spalte aus Stringgrid löschen


D. Annies - Sa 12.10.13 07:44
Titel: Spalte aus Stringgrid löschen
Hi, Delpher,

Ich habe in D6 ein Stringgrid, welches mit Inhalten gefüllt ist - zumeist jedenfalls, denn
es befinden sich auch als 4. und als 9. Spalte leere Spalten darunter. Sie haben zwar
einen Tabellenkopfinhalt, aber alle Zellen darunter sind leer.

Wie kann man aus einem Stringgrid diese leeren Spalten komplett löschen?

Danke für Ideen,
Detlef


Delete - Sa 12.10.13 07:52

Die Anzahl der Spalten in einem StringGrid wird durch das Property ColCount angegeben. Wenn du ColCount also verminderst, reduzierst du damit auch die Anzahl deiner Spalten. Da sich die zu löschenden Spalten nicht am Ende deines StringGrid befinden, empfieht es sich, das StringGrid vor dem Befüllen entsprechend einzurichten.


WasWeißDennIch - Sa 12.10.13 10:31

Ohne groß nachgedacht zu haben:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure DeleteColumn(Grid: TStringGrid; ColIndex: integer);
var
  i: integer;
begin
  Assert(Assigned(Grid), 'Kein gültiges StringGrid übergeben');
  if (ColIndex < 0or (ColIndex >= Grid.ColCount) then
    raise Exception.CreateFmt('Ungültiger Spaltenindex: %d', [ColIndex]);
  for i := ColIndex to Grid.ColCount - 2 do
    begin
      Grid.Cols[i].BeginUpdate;
      try
        Grid.Cols[i].Assign(Grid.Cols[i + 1]);
      finally
        Grid.Cols[i].EndUpdate;
      end;
    end;
  Grid.ColCount := Grid.ColCount - 1;
end;


jaenicke - Sa 12.10.13 10:56

Sinnvoller ist das StringGrid komplett zu löschen und die Daten aus der zugrunde liegenden Datenschicht neu zu lesen...