Browse Source

* Patch from Sven Barth to stream top/left

michael 5 years ago
parent
commit
082bd8ce32
1 changed files with 49 additions and 0 deletions
  1. 49 0
      packages/rtl/classes.pas

+ 49 - 0
packages/rtl/classes.pas

@@ -555,13 +555,18 @@ type
     function GetComponentCount: Integer;
     function GetComponentIndex: Integer;
     procedure Insert(AComponent: TComponent);
+    procedure ReadLeft(AReader: TReader);
+    procedure ReadTop(AReader: TReader);
     procedure Remove(AComponent: TComponent);
     procedure RemoveNotification(AComponent: TComponent);
     procedure SetComponentIndex(Value: Integer);
     procedure SetReference(Enable: Boolean);
+    procedure WriteLeft(AWriter: TWriter);
+    procedure WriteTop(AWriter: TWriter);
   protected
     FComponentStyle: TComponentStyle;
     procedure ChangeName(const NewName: TComponentName);
+    procedure DefineProperties(Filer: TFiler); override;
     procedure GetChildren(Proc: TGetChildProc; Root: TComponent); virtual;
     function GetChildOwner: TComponent; virtual;
     function GetChildParent: TComponent; virtual;
@@ -4328,6 +4333,20 @@ begin
 end;
 
 
+procedure TComponent.ReadLeft(AReader: TReader);
+
+begin
+  FDesignInfo := (FDesignInfo and $ffff0000) or (AReader.ReadInteger and $ffff);
+end;
+
+
+procedure TComponent.ReadTop(AReader: TReader);
+
+begin
+  FDesignInfo := ((AReader.ReadInteger and $ffff) shl 16) or (FDesignInfo and $ffff);
+end;
+
+
 procedure TComponent.Remove(AComponent: TComponent);
 
 begin
@@ -4386,6 +4405,22 @@ begin
 end;
 
 
+procedure TComponent.DefineProperties(Filer: TFiler);
+
+var
+  Temp: LongInt;
+  Ancestor: TComponent;
+begin
+  Ancestor := TComponent(Filer.Ancestor);
+  if Assigned(Ancestor) then
+    Temp := Ancestor.FDesignInfo
+  else
+    Temp := 0;
+  Filer.DefineProperty('Left', @ReadLeft, @WriteLeft, (FDesignInfo and $ffff) <> (Temp and $ffff));
+  Filer.DefineProperty('Top', @ReadTop, @WriteTop, (FDesignInfo and $ffff0000) <> (Temp and $ffff0000));
+end;
+
+
 procedure TComponent.GetChildren(Proc: TGetChildProc; Root: TComponent);
 
 begin
@@ -4614,6 +4649,20 @@ begin
 end;
 
 
+procedure TComponent.WriteLeft(AWriter: TWriter);
+
+begin
+  AWriter.WriteInteger(FDesignInfo and $ffff);
+end;
+
+
+procedure TComponent.WriteTop(AWriter: TWriter);
+
+begin
+  AWriter.WriteInteger((FDesignInfo shr 16) and $ffff);
+end;
+
+
 procedure TComponent.ValidateContainer(AComponent: TComponent);
 
 begin