Die While-schleife ist mir einfach lieber, hast recht es ist das gleich, aber egal.. ändert ja nichts am problem. Die fehlermeldung ist wie häufig ne Zugriffsverletzung und kommt an dieser Stelle:
Delphi-Quellcode:
k:=1;
while k < grd+1 do
begin
for i :=grid[k].FixedCols to grid[k].ColCount-1 do //<--- Fehlermeldung
for j := grid[k].FixedRows to grid[k].RowCount-1 do
if zelle.editiert = true then
begin // wenn die zelle editiert wurde, dann mache was z.b. speichere
zelle.editiert:=false;
showmessage(inttostr(zelle.reihe));
end;
k:=k+1;
enD;
Das objekt 'Zelle' setzt ich bei erstellen und einlesen der Grids:
Delphi-Quellcode:
k:=0;
While K < ibDataset2.RecordCount do
Begin
grid[grd].RowCount := grid[grd].RowCount +1;
grid[grd].Cells[1,k+1]:=ibdataset2.fieldbyname('ablese_nr').AsString;
grid[grd].Cells[2,k+1]:=ibdataset2.fieldbyname('ablesedatum').AsString;
AddObjectToGrid(1, k+1, ibdataset2.fieldbyname('ablese_nr').AsInteger, grid[grd]);
AddObjectToGrid(2, k+1, ibdataset2.fieldbyname('ablese_nr').AsInteger, grid[grd]);
ibdataset2.Next;
k:=k+1
end;
Und bei keypress wird Zelle.editiert von auf true gesetzt (false ist defaukt)