Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - StringGrid komplett löschen


rebesky - Di 08.04.03 14:17
Titel: StringGrid komplett löschen
Hallo User!

Wie kann ich (am betsen mit einem Befehl) den kompletten Inhalt jeder Zelle eines String-Grids löschen?

Vielen Dank im Voraus!

Björn Rebesky :D


Aya - Di 08.04.03 14:29

Hi,

ich kenne das StringGrid nicht, bzw benutze es nie.. abe gibt's da kein .Clear???

Au'revoir,
Aya~


UGrohne - Di 08.04.03 14:37

Ein Clear hab ich bisher leider auch nicht gefunden, ich hab mir dann halt eine Prozedur dazu geschrieben, der alle Zellen (also bis RowCoutn und ColumnCount) durchgegangen ist. Alternativ kannste auch RowCount und COlumnCount setzen und die restlichen sichtbaren Zellen nur löschen, die anderen werden ja dann auch nciht mehr angezeigt.

Gruß


ShadowCaster - Di 08.04.03 14:46

da gibt es allerdings ein Problem, wenn man nur den RowCount umsetzt. Wenn du z.B. Records mit Addobject an die Stringlist hängst, dann sind die Zeiger auf die Records weg wenn du den Rowcount umsetzt, aber die Records sind noch im Speicher und brauchen Speicherplatz.

Also wenn du nur Text im Stringrid hast, reicht es den Rowcount neu zu setzten. Wenn du aber Objekte dran hast, musst du die natürlich auch löschen. :wink:


rebesky - Di 08.04.03 14:47

...ja..ein Clear find ich auch nicht! Ist echt Mist! :twisted: Das mit der Prozedur hab ich alternativ auch schon gemacht - nur ist das grottenlangsam bei 2500x2500 Einträgen!
Das muß doch irgendwie einfacher gehen? :cry:
Vielleicht einfach Grid killen und ein neues leeres an der selben Stelle erstellen?

Gruß, :D

Björn


rebesky - Di 08.04.03 14:51

huhu!

ich habe dann noch folgendes versucht:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
...
var myrect : TGridRect;

myRect.Left := 1;
myRect.Top := 1;
myRect.Right := Grid.ColCount;
myRect.Bottom := Grid.RowCount;
Grid.Selection := myRect;
Grid.Selection := ????? (was muß hier hin?)

Gibt es keine Möglichkeit eine Selection zu löschen? :?:

Gruß,
Björn

Moderiert von user profile iconTino: Code-Tags hinzugefügt.
Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.


ShadowCaster - Di 08.04.03 14:57

du meinst, einem Grid eine neue Selection zuzuweisen? Löschen hab ich noch nie gebraucht. Aber neu zuweisen geht so:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var myrect : TGridRect; 

myRect := StringGrid.Selection;
myRect.Top := 3;
//... etc.
StringGrid.Selection := myRect;


vielleicht muss man allen Einträgen in myRect 0 zuweisen?

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.


acer - Do 21.04.05 14:09
Titel: lösung
Hi, ich arbeite schon was länger mitStringGrids und hab hier (unten) ne komplettlösung.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
//Procedure zum reseten der Stringgrids
procedure ClearGrid(Grid :TStringGrid);
var
i : integer;
begin
  i := 0;
  while i <> grid.Rowcount do
  begin
   grid.Rows[i].Clear;
   inc(i);
  end;
  grid.ColCount:=1;
  grid.RowCount:=1;
end;


Moderiert von user profile iconTino: Beiträge vereint.