dm.inc 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. {%MainUnit classes.pp}
  2. {
  3. This file is part of the Free Pascal run time library.
  4. Copyright (c) 2003 by the Free Pascal development team
  5. <What does this file>
  6. See the file COPYING.FPC, included in this distribution,
  7. for details about the copyright.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  11. **********************************************************************}
  12. Constructor TDataModule.Create(AOwner: TComponent);
  13. begin
  14. CreateNew(AOwner);
  15. if (ClassType <> TDataModule) and
  16. not (csDesigning in ComponentState) then
  17. begin
  18. if not InitInheritedComponent(Self, TDataModule) then
  19. raise EStreamError.CreateFmt(SErrNoSTreaming, [ClassName]);
  20. if OldCreateOrder then
  21. DoCreate;
  22. end;
  23. end;
  24. Constructor TDataModule.CreateNew(AOwner: TComponent);
  25. begin
  26. CreateNew(AOwner,0);
  27. end;
  28. constructor TDataModule.CreateNew(AOwner: TComponent; CreateMode: Integer);
  29. begin
  30. inherited Create(AOwner);
  31. FDPPI := 96;
  32. if Assigned(AddDataModule) and (CreateMode>=0) then
  33. AddDataModule(Self);
  34. end;
  35. Procedure TDataModule.AfterConstruction;
  36. begin
  37. If not OldCreateOrder then
  38. DoCreate;
  39. end;
  40. Procedure TDataModule.BeforeDestruction;
  41. begin
  42. Destroying;
  43. RemoveFixupReferences(Self, '');
  44. if not OldCreateOrder then
  45. DoDestroy;
  46. end;
  47. destructor TDataModule.Destroy;
  48. begin
  49. if OldCreateOrder then
  50. DoDestroy;
  51. if Assigned(RemoveDataModule) then
  52. RemoveDataModule(Self);
  53. inherited Destroy;
  54. end;
  55. Procedure TDataModule.DoCreate;
  56. begin
  57. if Assigned(FOnCreate) then
  58. try
  59. FOnCreate(Self);
  60. except
  61. if not HandleCreateException then
  62. raise;
  63. end;
  64. end;
  65. Procedure TDataModule.DoDestroy;
  66. begin
  67. if Assigned(FOnDestroy) then
  68. try
  69. FOnDestroy(Self);
  70. except
  71. if Assigned(ApplicationHandleException) then
  72. ApplicationHandleException(Self);
  73. end;
  74. end;
  75. procedure TDataModule.DefineProperties(Filer: TFiler);
  76. var
  77. Ancestor : TDataModule;
  78. HaveData,
  79. HavePPIData: Boolean;
  80. begin
  81. inherited DefineProperties(Filer);
  82. Ancestor := TDataModule(Filer.Ancestor);
  83. HaveData:=(Ancestor=Nil) or
  84. (FDSize.X<>Ancestor.FDSize.X) or
  85. (FDSize.Y<>Ancestor.FDSize.Y) or
  86. (FDPos.Y<>Ancestor.FDPos.Y) or
  87. (FDPos.X<>Ancestor.FDPos.X);
  88. HavePPIData:=(Assigned(Ancestor) and (FDPPI<>Ancestor.FDPPI)) or
  89. (not Assigned(Ancestor) and (FDPPI<>96));
  90. Filer.DefineProperty('Height', @ReadH, @WriteH, HaveData);
  91. Filer.DefineProperty('HorizontalOffset', @ReadL, @WriteL, HaveData);
  92. Filer.DefineProperty('VerticalOffset', @ReadT,@WriteT, HaveData);
  93. Filer.DefineProperty('Width', @ReadW, @WriteW, HaveData);
  94. Filer.DefineProperty('PPI', @ReadP, @WriteP,HavePPIData);
  95. end;
  96. procedure TDataModule.GetChildren(Proc: TGetChildProc; Root: TComponent);
  97. var
  98. I : Integer;
  99. begin
  100. inherited GetChildren(Proc, Root);
  101. if (Root=Self) then
  102. for I:=0 to ComponentCount-1 do
  103. If Not Components[I].HasParent then
  104. Proc(Components[i]);
  105. end;
  106. function TDataModule.HandleCreateException: Boolean;
  107. begin
  108. Result:=Assigned(ApplicationHandleException);
  109. if Result then
  110. ApplicationHandleException(Self);
  111. end;
  112. Procedure TDataModule.ReadP(Reader: TReader);
  113. begin
  114. FDPPI := Reader.ReadInteger;
  115. end;
  116. Procedure TDataModule.ReadState(Reader: TReader);
  117. begin
  118. FOldOrder := false;
  119. inherited ReadState(Reader);
  120. end;
  121. Procedure TDataModule.ReadT(Reader: TReader);
  122. begin
  123. FDPos.Y := Reader.ReadInteger;
  124. end;
  125. Procedure TDataModule.WriteT(Writer: TWriter);
  126. begin
  127. Writer.WriteInteger(FDPos.Y);
  128. end;
  129. Procedure TDataModule.ReadL(Reader: TReader);
  130. begin
  131. FDPos.X := Reader.ReadInteger;
  132. end;
  133. Procedure TDataModule.WriteL(Writer: TWriter);
  134. begin
  135. Writer.WriteInteger(FDPos.X);
  136. end;
  137. Procedure TDataModule.ReadW(Reader: TReader);
  138. begin
  139. FDSIze.X := Reader.ReadInteger;
  140. end;
  141. Procedure TDataModule.WriteP(Writer: TWriter);
  142. begin
  143. Writer.WriteInteger(FDPPI);
  144. end;
  145. Procedure TDataModule.WriteW(Writer: TWriter);
  146. begin
  147. Writer.WriteInteger(FDSIze.X);
  148. end;
  149. Procedure TDataModule.ReadH(Reader: TReader);
  150. begin
  151. FDSIze.Y := Reader.ReadInteger;
  152. end;
  153. Procedure TDataModule.WriteH(Writer: TWriter);
  154. begin
  155. Writer.WriteInteger(FDSIze.Y);
  156. end;