Einzelnen Beitrag anzeigen

plautzer

Registriert seit: 23. Aug 2003
172 Beiträge
 
#44

Re: Property "Objects" im Stringgrid

  Alt 23. Feb 2005, 20:43
Hi,

ich habe meine liebe zum array wieder gefunden

das ganze sieht nun so aus:

Delphi-Quellcode:
grid :array[1..20] of tstringgrid;
      grd:integer;

procedure TForm1.AddObjectToGrid(ACol, ARow : integer; nr : integer; st_grid:tstringgrid);
begin
  zelle := Tzelle.Create;
  zelle.nr := nr;
  zelle.reihe := arow;
  zelle.editiert:=false;
  st_grid.Objects[ACol, ARow] := zelle;
end;


grd:=1;
while grd < ibdataset1.RecordCount+1 do
begin
datum1:=ibdataset1.fieldbyname('ablesejahr').AsInteger;
NewTabSheet := TTabSheet.Create(PageControl1);
NewTabSheet.PageControl := PageControl1;
newtabsheet.Caption:= inttostr(grd);

grid[grd]:=tstringgrid.Create(newtabsheet);
grid[grd].Parent := newtabsheet;
//grid[grd].TableName:='grid' + inttostr(datum1);
grid[grd].name:='grid' + inttostr(datum1);
with grid[grd] do
....

  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;
...
Per keydown wird das objekt zellen.editiert auf true gesetzt und das will ich dann so auslesen:
Delphi-Quellcode:
 
for k:=1 to grd do
  for i :=grid[k].FixedCols to grid[k].ColCount do <--- Hier bringt Delphi die Fehlermeldung
    for j := grid[k].FixedRows to grid[k].RowCount do
       if zelle.editiert = true then
          begin
          zelle.editiert:=false;
          showmessage(inttostr(zelle.reihe));
          end
Wenn ich das jetzt ausführe, und nichts wurde geändert, dann kommt ne Fehlermeldung "Zugriffsverletzung...". Die kommt auch, wenn die Schleife einmal durchlaufen wurde.
Sieht jemand den Grund dafür?

Thx,

Plautzer
  Mit Zitat antworten Zitat