{%MainUnit classes.pp} { This file is part of the Free Pascal run time library. Copyright (c) 2003 by the Free Pascal development team <What does this file> See the file COPYING.FPC, included in this distribution, for details about the copyright. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. **********************************************************************} Constructor TDataModule.Create(AOwner: TComponent); begin CreateNew(AOwner); if (ClassType <> TDataModule) and not (csDesigning in ComponentState) then begin if not InitInheritedComponent(Self, TDataModule) then raise EStreamError.CreateFmt(SErrNoSTreaming, [ClassName]); if OldCreateOrder then DoCreate; end; end; Constructor TDataModule.CreateNew(AOwner: TComponent); begin CreateNew(AOwner,0); end; constructor TDataModule.CreateNew(AOwner: TComponent; CreateMode: Integer); begin inherited Create(AOwner); FDPPI := 96; if Assigned(AddDataModule) and (CreateMode>=0) then AddDataModule(Self); end; Procedure TDataModule.AfterConstruction; begin If not OldCreateOrder then DoCreate; end; Procedure TDataModule.BeforeDestruction; begin Destroying; RemoveFixupReferences(Self, ''); if not OldCreateOrder then DoDestroy; end; destructor TDataModule.Destroy; begin if OldCreateOrder then DoDestroy; if Assigned(RemoveDataModule) then RemoveDataModule(Self); inherited Destroy; end; Procedure TDataModule.DoCreate; begin if Assigned(FOnCreate) then try FOnCreate(Self); except if not HandleCreateException then raise; end; end; Procedure TDataModule.DoDestroy; begin if Assigned(FOnDestroy) then try FOnDestroy(Self); except if Assigned(ApplicationHandleException) then ApplicationHandleException(Self); end; end; procedure TDataModule.DefineProperties(Filer: TFiler); var Ancestor : TDataModule; HaveData, HavePPIData: Boolean; begin inherited DefineProperties(Filer); Ancestor := TDataModule(Filer.Ancestor); HaveData:=(Ancestor=Nil) or (FDSize.X<>Ancestor.FDSize.X) or (FDSize.Y<>Ancestor.FDSize.Y) or (FDPos.Y<>Ancestor.FDPos.Y) or (FDPos.X<>Ancestor.FDPos.X); HavePPIData:=(Assigned(Ancestor) and (FDPPI<>Ancestor.FDPPI)) or (not Assigned(Ancestor) and (FDPPI<>96)); Filer.DefineProperty('Height', @ReadH, @WriteH, HaveData); Filer.DefineProperty('HorizontalOffset', @ReadL, @WriteL, HaveData); Filer.DefineProperty('VerticalOffset', @ReadT,@WriteT, HaveData); Filer.DefineProperty('Width', @ReadW, @WriteW, HaveData); Filer.DefineProperty('PPI', @ReadP, @WriteP,HavePPIData); end; procedure TDataModule.GetChildren(Proc: TGetChildProc; Root: TComponent); var I : Integer; begin inherited GetChildren(Proc, Root); if (Root=Self) then for I:=0 to ComponentCount-1 do If Not Components[I].HasParent then Proc(Components[i]); end; function TDataModule.HandleCreateException: Boolean; begin Result:=Assigned(ApplicationHandleException); if Result then ApplicationHandleException(Self); end; Procedure TDataModule.ReadP(Reader: TReader); begin FDPPI := Reader.ReadInteger; end; Procedure TDataModule.ReadState(Reader: TReader); begin FOldOrder := false; inherited ReadState(Reader); end; Procedure TDataModule.ReadT(Reader: TReader); begin FDPos.Y := Reader.ReadInteger; end; Procedure TDataModule.WriteT(Writer: TWriter); begin Writer.WriteInteger(FDPos.Y); end; Procedure TDataModule.ReadL(Reader: TReader); begin FDPos.X := Reader.ReadInteger; end; Procedure TDataModule.WriteL(Writer: TWriter); begin Writer.WriteInteger(FDPos.X); end; Procedure TDataModule.ReadW(Reader: TReader); begin FDSIze.X := Reader.ReadInteger; end; Procedure TDataModule.WriteP(Writer: TWriter); begin Writer.WriteInteger(FDPPI); end; Procedure TDataModule.WriteW(Writer: TWriter); begin Writer.WriteInteger(FDSIze.X); end; Procedure TDataModule.ReadH(Reader: TReader); begin FDSIze.Y := Reader.ReadInteger; end; Procedure TDataModule.WriteH(Writer: TWriter); begin Writer.WriteInteger(FDSIze.Y); end;