2
0

dm.inc 4.2 KB

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