Einzelnen Beitrag anzeigen

Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#5

Re: StringGrid.RowCount lässt sich nicht ändern

  Alt 19. Nov 2006, 15:42
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
  Mit Zitat antworten Zitat