dm.inc 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. {
  2. $Id$
  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. 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 : Boolean;
  78. begin
  79. inherited DefineProperties(Filer);
  80. Ancestor := TDataModule(Filer.Ancestor);
  81. HaveData:=(Ancestor=Nil) or
  82. (FDSize.X<>Ancestor.FDSize.X) or
  83. (FDSize.Y<>Ancestor.FDSize.Y) or
  84. (FDPos.Y<>Ancestor.FDPos.Y) or
  85. (FDPos.X<>Ancestor.FDPos.X);
  86. Filer.DefineProperty('Height', @ReadH, @WriteH, HaveData);
  87. Filer.DefineProperty('HorizontalOffset', @ReadL, @WriteL, HaveData);
  88. Filer.DefineProperty('VerticalOffset', @ReadT,@WriteT, HaveData);
  89. Filer.DefineProperty('Width', @ReadW, @WriteW, HaveData);
  90. end;
  91. procedure TDataModule.GetChildren(Proc: TGetChildProc; Root: TComponent);
  92. var
  93. I : Integer;
  94. begin
  95. inherited GetChildren(Proc, Root);
  96. if (Root=Self) then
  97. for I:=0 to ComponentCount-1 do
  98. If Not Components[I].HasParent then
  99. Proc(Components[i]);
  100. end;
  101. function TDataModule.HandleCreateException: Boolean;
  102. begin
  103. Result:=Assigned(ApplicationHandleException);
  104. if Result then
  105. ApplicationHandleException(Self);
  106. end;
  107. Procedure TDataModule.ReadState(Reader: TReader);
  108. begin
  109. FOldOrder := false;
  110. inherited ReadState(Reader);
  111. end;
  112. Procedure TDataModule.ReadT(Reader: TReader);
  113. begin
  114. FDPos.Y := Reader.ReadInteger;
  115. end;
  116. Procedure TDataModule.WriteT(Writer: TWriter);
  117. begin
  118. Writer.WriteInteger(FDPos.Y);
  119. end;
  120. Procedure TDataModule.ReadL(Reader: TReader);
  121. begin
  122. FDPos.X := Reader.ReadInteger;
  123. end;
  124. Procedure TDataModule.WriteL(Writer: TWriter);
  125. begin
  126. Writer.WriteInteger(FDPos.X);
  127. end;
  128. Procedure TDataModule.ReadW(Reader: TReader);
  129. begin
  130. FDSIze.X := Reader.ReadInteger;
  131. end;
  132. Procedure TDataModule.WriteW(Writer: TWriter);
  133. begin
  134. Writer.WriteInteger(FDSIze.X);
  135. end;
  136. Procedure TDataModule.ReadH(Reader: TReader);
  137. begin
  138. FDSIze.Y := Reader.ReadInteger;
  139. end;
  140. Procedure TDataModule.WriteH(Writer: TWriter);
  141. begin
  142. Writer.WriteInteger(FDSIze.Y);
  143. end;