hoe kan ik 'n ingevuld string grid in 1x leeg gooien ?
heb alle commando's doorgelopen maar nix gevonden
(ik heb delphi6)
tia
heb alle commando's doorgelopen maar nix gevonden
(ik heb delphi6)
tia
Verwijderd
1
2
3
4
5
6
7
8
9
| procedure ClearGrid(AGrid: TStringGrid);
var
iCol, iRow: integer;
begin
with AGrid do
for iCol := 0 to ColCount-1 do
for iRow := 0 to RowCount-1 do
Cells[iCol, iRow] := '';
end; |
thing worksOp donderdag 06 december 2001 20:23 schreef Afterlife het volgende:
De StringGrid is in Delphi zo ontworpen dat je het eigenlijk alleen maar op zoiets als de volgende manier kunt doen:
code:
1 2 3 4 5 6 7 8 9procedure ClearGrid(AGrid: TStringGrid); var iCol, iRow: integer; begin with AGrid do for iCol := 0 to ColCount-1 do for iRow := 0 to RowCount-1 do Cells[iCol, iRow] := ''; end;
(er even vanuit gaand dat je geen Objects hebt toegevoegd...)
Technisch gezien zou 't wel mogelijk zijn om in 1x de hele grid te clearen, maar in de praktijk kan 't gewoon niet:
TStringGrid heeft een field FData, wat een pointer is naar een TSparseList, en TSparseList heeft wel een Clear method. Maar FData is private, en daar kun je dus gewoon niet bij. Tenminste niet zonder de Grids unit aan te passen, en dat wil je niet...
https://fgheysels.github.io/
Ach, als je bijvoorbeeld denkt aan een TStringList of een TListView dan is het niet zo vreemd dat er voor een Grid ook wel een .Clear functie is.Op donderdag 06 december 2001 21:28 schreef whoami het volgende:
Erg eigenlijk. Sommige mensen denken dat je alles kunt doen met een één voorgedefinieerde functie. Waar zijn de echte hackers gebleven?
"The shell stopped unexpectedly and Explorer.exe was restarted."
dat was ook mijn 1e ged8eOp donderdag 06 december 2001 21:58 schreef jelmervos het volgende:
[..]
Ach, als je bijvoorbeeld denkt aan een TStringList of een TListView dan is het niet zo vreemd dat er voor een Grid ook wel een .Clear functie is.
Verwijderd
oogjes open, snaveltjes dicht
Localhost, sweet localhost
Verwijderd
downto...Op vrijdag 07 december 2001 05:02 schreef El_Mundo het volgende:
BTW, maakt het anders niet uit of je 0 to ColCount-1 of dat je ColCount-1 to 0 doet?
Verwijderd
Nee, je krijgt dan een TStringGridStrings terug. En wanneer je die leeg gooit gaat 'ie op zoek naar z'n TSparseList en zet iedere waarde die bij z'n row hoort op ''.Op vrijdag 07 december 2001 09:52 schreef kvdveer het volgende:
Ik heb delphi hier niet bij de hand, maar als je de rows op vraagt krijg je toch een TStringlist? Als je die leeg gooit, IPV van handmatig de hele rij, dan heb je weer een stap omzeild.
Verwijderd
Zou leuk zijn wanneer 't 1 geheugenblok is, maar dat is 't niet.Op vrijdag 07 december 2001 23:19 schreef GerbenW het volgende:
Kun je dat ding niet rechtstreeks in het geheugen leegmaken?
Verwijderd
In wezen hetzelfde, maar dit werkt ook: [Objects worden nu op nil gezet]Afterlife:
code:
1 2 3 4 5 6 7 8 9procedure ClearGrid(AGrid: TStringGrid); var iCol, iRow: integer; begin with AGrid do for iCol := 0 to ColCount-1 do for iRow := 0 to RowCount-1 do Cells[iCol, iRow] := ''; end;
1
2
3
4
5
6
7
8
| procedure ClearGrid(AGrid: TStringGrid);
var
I: Integer;
begin
with AGrid do
for I := 0 to RowCount - 1 do
Rows[I].Clear;
end; |
Verwijderd
En juist vanwege die Objects gaf ik niet jouw manier als voorbeeld. De pointers naar die objects worden wel op nil gezet (sterker nog, ze bestaan helemaal niet meer in de CachedIndex), maar de objecten zelf worden niet gefreed. En het is ook maar de vraag of je dat op dat moment wel wilt...Op zaterdag 08 december 2001 00:48 schreef DiFool het volgende:
In wezen hetzelfde, maar dit werkt ook: [Objects worden nu op nil gezet]