dm.inc 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  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. if Assigned(AddDataModule) and (CreateMode>=0) then
  31. AddDataModule(Self);
  32. end;
  33. Procedure TDataModule.AfterConstruction;
  34. begin
  35. If not OldCreateOrder then
  36. DoCreate;
  37. end;
  38. Procedure TDataModule.BeforeDestruction;
  39. begin
  40. Destroying;
  41. RemoveFixupReferences(Self, '');
  42. if not OldCreateOrder then
  43. DoDestroy;
  44. end;
  45. destructor TDataModule.Destroy;
  46. begin
  47. if OldCreateOrder then
  48. DoDestroy;
  49. if Assigned(RemoveDataModule) then
  50. RemoveDataModule(Self);
  51. inherited Destroy;
  52. end;
  53. Procedure TDataModule.DoCreate;
  54. begin
  55. if Assigned(FOnCreate) then
  56. try
  57. FOnCreate(Self);
  58. except
  59. if not HandleCreateException then
  60. raise;
  61. end;
  62. end;
  63. Procedure TDataModule.DoDestroy;
  64. begin
  65. if Assigned(FOnDestroy) then
  66. try
  67. FOnDestroy(Self);
  68. except
  69. if Assigned(ApplicationHandleException) then
  70. ApplicationHandleException(Self);
  71. end;
  72. end;
  73. procedure TDataModule.DefineProperties(Filer: TFiler);
  74. var
  75. Ancestor : TDataModule;
  76. HaveData : Boolean;
  77. begin
  78. inherited DefineProperties(Filer);
  79. Ancestor := TDataModule(Filer.Ancestor);
  80. HaveData:=(Ancestor=Nil) or
  81. (FDSize.X<>Ancestor.FDSize.X) or
  82. (FDSize.Y<>Ancestor.FDSize.Y) or
  83. (FDPos.Y<>Ancestor.FDPos.Y) or
  84. (FDPos.X<>Ancestor.FDPos.X);
  85. Filer.DefineProperty('Height', @ReadH, @WriteH, HaveData);
  86. Filer.DefineProperty('HorizontalOffset', @ReadL, @WriteL, HaveData);
  87. Filer.DefineProperty('VerticalOffset', @ReadT,@WriteT, HaveData);
  88. Filer.DefineProperty('Width', @ReadW, @WriteW, HaveData);
  89. end;
  90. procedure TDataModule.GetChildren(Proc: TGetChildProc; Root: TComponent);
  91. var
  92. I : Integer;
  93. begin
  94. inherited GetChildren(Proc, Root);
  95. if (Root=Self) then
  96. for I:=0 to ComponentCount-1 do
  97. If Not Components[I].HasParent then
  98. Proc(Components[i]);
  99. end;
  100. function TDataModule.HandleCreateException: Boolean;
  101. begin
  102. Result:=Assigned(ApplicationHandleException);
  103. if Result then
  104. ApplicationHandleException(Self);
  105. end;
  106. Procedure TDataModule.ReadState(Reader: TReader);
  107. begin
  108. FOldOrder := false;
  109. inherited ReadState(Reader);
  110. end;
  111. Procedure TDataModule.ReadT(Reader: TReader);
  112. begin
  113. FDPos.Y := Reader.ReadInteger;
  114. end;
  115. Procedure TDataModule.WriteT(Writer: TWriter);
  116. begin
  117. Writer.WriteInteger(FDPos.Y);
  118. end;
  119. Procedure TDataModule.ReadL(Reader: TReader);
  120. begin
  121. FDPos.X := Reader.ReadInteger;
  122. end;
  123. Procedure TDataModule.WriteL(Writer: TWriter);
  124. begin
  125. Writer.WriteInteger(FDPos.X);
  126. end;
  127. Procedure TDataModule.ReadW(Reader: TReader);
  128. begin
  129. FDSIze.X := Reader.ReadInteger;
  130. end;
  131. Procedure TDataModule.WriteW(Writer: TWriter);
  132. begin
  133. Writer.WriteInteger(FDSIze.X);
  134. end;
  135. Procedure TDataModule.ReadH(Reader: TReader);
  136. begin
  137. FDSIze.Y := Reader.ReadInteger;
  138. end;
  139. Procedure TDataModule.WriteH(Writer: TWriter);
  140. begin
  141. Writer.WriteInteger(FDSIze.Y);
  142. end;