Hallo allemaal!
Ik heb een probleem met het overzetten van oude Delphi 7 code naar Delphi XE5 en het probleem behelst de TCollection.
Deze wordt 'vrij simpel' aangemaakt en nergens gedefinieerd:
Code:
var
Sheets: TCollection;
In de Form.Create wordt'ie gemaakt (en in de Form.Destroy bevrijd):
Code:
Sheets := TCollection.Create;
Dit werkte eigenlijk niet meer, maar heb ik reeds veranderd naar "Sheets := TCollection.Create(Self)"
In deze Collection moet een TSHEET worden gezet:
Code:
TSHEET=class(TObject)
RECSIZE:INTEGER;
Offset,NrLines,MaxLine:Integer;
Definition:SheetDefinition;
constructor Create(Size:Integer;Def:SheetDefinition);
destructor Destroy; override;
function RealStr(R:Real;Digits:Integer):String;
PROCEDURE STOREMAXLINE(M:INTEGER);
FUNCTION READMAXLINE:INTEGER;
FUNCTION SETRECORD(IX:INTEGER;REC:POINTER):BOOLEAN;
FUNCTION GETRECORD(IX:INTEGER;REC:POINTER):BOOLEAN;
PROCEDURE SETCEL(Y:INTEGER); VIRTUAL;
PROCEDURE DRAWLINE(INDEX:INTEGER); VIRTUAL;
PROCEDURE SETUPDATA; VIRTUAL;
PROCEDURE READDBASE; VIRTUAL;
PROCEDURE GridMouseDown(X, Y: Integer); VIRTUAL;
FUNCTION EDITFIELD(X,Y:INTEGER):WORD;
PROCEDURE FILLSHEET;
END;
VLOEISTOF=class(TSheet)
PROCEDURE DRAWLINE(INDEX:INTEGER); override;
PROCEDURE SETCEL(Y:INTEGER); override;
procedure ReadDBase; override;
procedure GridMouseDown(X, Y: Integer); override;
END;
In de Form.Create wordt, nadat de Collection aangemaakt is zoals boven aangegeven, een aanroep gedaan naar de Procedure 'AddSheet':
Code:
AddSheet(VLOEISTOF.Create(SizeOf(VLOEISTOFRecord),VLOEISTOFSheetDef));
Deze Procedure ziet er als volgt uit:
Code:
procedure TForm1.AddSheet(ASheet:TSheet);
begin
TabControl.Tabs.Add(ASheet.Definition.SheetName);
Sheets.Add(ASheet);
end;
Voor zo ver ik kan zien, gaat het daar volledig mis... Het is namelijk niet mogelijk 'Add' aan te roepen met parameters. Ik kan dus 'ASheet' niet toevoegen aan de Collection 'Sheets'. Let wel, dit werkte voortreffelijk in Delphi 7 maar niet meer in Delphi XE5.
Iemand misschien ene idee wat ik fout doe of waar ik op moet letten? Alvast bedankt!
Groeten,
Robert
Bookmarks