Autor Beitrag
rebesky
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 08.04.03 14:17 
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: 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~

_________________
Aya
I aim for my endless dreams and I know they will come true!
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 08.04.03 14:51 
huhu!

ich habe dann noch folgendes versucht:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: 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:
ausblenden 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
Hält's aus hier
Beiträge: 15

winxp,linux
d7e,vb6,php
BeitragVerfasst: Do 21.04.05 14:09 
Titel: lösung
Hi, ich arbeite schon was länger mitStringGrids und hab hier (unten) ne komplettlösung.

ausblenden 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.


Zuletzt bearbeitet von acer am Do 21.04.05 14:12, insgesamt 1-mal bearbeitet