Zitat von
hsbc:
Es hat sich leider nichts verändert.
So lange ich kein neues Verzeichnis anlege, funktioniert alles wunderbar. ...
mfg
Herbert
Hallo Herbert,
setz doch mal einen Haltepunkt und lass dir c anzeigen (mit Start - Auswerten).
Grundsätzlich muss das funktionieren, ich habe Anwendungen mit mehr als 10 grossen Stringgrids, die werden beim Einlesen ensprechend immer weiter hochgesetzt bis über 1000 Rows, und notfalls auch wieder herunter. Anbei mein Code dafür, der keine Probleme macht:
Delphi-Quellcode:
procedure TRKMainForm.AddRowToGrid (var G : TStringGrid);
var NewSel : TGRidRect;
begin
G.RowCount := G.RowCount + 1;
NewSel.Top := G.RowCount - 1;
NewSel.Left := 1;
NewSel.Bottom := NewSel.Top;
NewSel.Right := 1;
G.Selection := NewSel;
end;
procedure TRKMainForm.InsertRowToGrid (var G : TStringGrid; docopy : boolean);
var ActSel : TGRidRect;
c,cmax,r,rins : integer;
begin
ActSel := G.Selection;
r := ActSel.Top ;
if (r < 1) or (r >= G.RowCount) then
begin
Beep;
exit;
end;
G.RowCount := G.RowCount + 1;
rins := r;
cmax := G.ColCount - 1;
for r := G.RowCount - 2 downto rins do
for c := 0 to cmax do G.Cells [c,r+1] := G.Cells[c,r];
if docopy then
for c := 0 to cmax do G.Cells[c,rins] := G.Cells[c,rins+1]
else
for c := 0 to cmax do G.Cells[c,rins] := '';
ActSel.Left := 1;
ActSel.Top := rins;
ActSel.Right := 1;
ActSel.Bottom := rins;
G.Selection := ActSel;
end;
procedure TRKMainForm.DeleteRowFromGrid (var G : TStringGrid);
var ActSel : TGRidRect;
r,ri,rmax : integer;
begin
ActSel := G.Selection;
r := ActSel.Top ;
if (r < 1) or (r >= G.RowCount) then
begin
Beep;
exit;
end;
for ri := r to G.RowCount - 2 do
G.Rows[ri] := G.Rows[ri+1];
G.RowCount := G.RowCount - 1;
end;
Ich sehe also auch nicht, wo du was falsch gemacht haben könntest.
Gruss Reinhard