1 unit sparta_FormBackgroundForMDI;
2
3 {$mode objfpc}{$H+}
4 interface
5
6 uses
7 Classes, SysUtils, FileUtil, Forms, Controls, StdCtrls, ExtCtrls,
8 sparta_InterfacesMDI;
9
10 type
11
12 { TfrFormBackgroundForMDI }
13
14 TfrFormBackgroundForMDI = class(TFrame, IDesignedFormBackground)
15 Panel1: TPanel;
16 procedure Panel1MouseDown(Sender: TObject; {%H-}Button: TMouseButton;
17 {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer);
18 procedure Panel1MouseMove(Sender: TObject; {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer
19 );
20 procedure Panel1MouseUp(Sender: TObject; {%H-}Button: TMouseButton;
21 {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer);
22 private
23 FDesignedForm: IDesignedForm;
24 FResizeFrame: IResizeFrame;
25 FDelta: TPoint;
26 FDown: Boolean;
27
GetMarginnull28 function GetMargin(const AIndex: Integer): Integer;
29 protected
GetParentnull30 function GetParent: TWinControl; virtual;
31 procedure SetParent(AParent: TWinControl); override;
GetResizeFramenull32 function GetResizeFrame: IResizeFrame;
33 procedure SetResizeFrame(AValue: IResizeFrame);
34
GetDesignedFormnull35 function GetDesignedForm: IDesignedForm;
36 public
37 { public declarations }
38 constructor Create(const ADesignedForm: IDesignedForm); virtual; reintroduce;
39
40 procedure RefreshValues;
41 end;
42
43 implementation
44
45 {$R *.lfm}
46
47 { TfrFormBackgroundForMDI }
48
49 procedure TfrFormBackgroundForMDI.Panel1MouseDown(Sender: TObject;
50 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
51 var
52 LCtrlPoint: TPoint;
53 begin
54 LCtrlPoint := Panel1.ScreenToClient(Mouse.CursorPos);
55 FDelta.x := -LCtrlPoint.X;
56 FDelta.y := -LCtrlPoint.Y;
57 FDown := True;
58 end;
59
60 procedure TfrFormBackgroundForMDI.Panel1MouseMove(Sender: TObject;
61 Shift: TShiftState; X, Y: Integer);
62 var
63 frmPoint: TPoint;
64 LFrame: TCustomFrame;
65 begin
66 if (not FDown) or (FResizeFrame = nil) then
67 Exit;
68
69 frmPoint := Self.ScreenToClient(Mouse.CursorPos);
70 LFrame := FResizeFrame.Frame;
71 LFrame.Left := LFrame.Left + (frmPoint.x + FDelta.x);
72 LFrame.Top := LFrame.Top + (frmPoint.y + FDelta.y);
73 end;
74
75 procedure TfrFormBackgroundForMDI.Panel1MouseUp(Sender: TObject;
76 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
77 begin
78 FDown := False;
79 end;
80
GetMarginnull81 function TfrFormBackgroundForMDI.GetMargin(const AIndex: Integer): Integer;
82 begin
83 case AIndex of
84 0: // left
85 Result := 5;
86 1: // Top
87 Result := 30;
88 2: // Right
89 Result := 5;
90 3: // Bottom
91 Result := 5;
92 end;
93 end;
94
GetParentnull95 function TfrFormBackgroundForMDI.GetParent: TWinControl;
96 begin
97 Result := inherited Parent;
98 end;
99
100 procedure TfrFormBackgroundForMDI.SetParent(AParent: TWinControl);
101 begin
102 inherited SetParent(AParent);
103 end;
104
TfrFormBackgroundForMDI.GetResizeFramenull105 function TfrFormBackgroundForMDI.GetResizeFrame: IResizeFrame;
106 begin
107 Result := FResizeFrame;
108 end;
109
110 procedure TfrFormBackgroundForMDI.SetResizeFrame(AValue: IResizeFrame);
111 begin
112 FResizeFrame := AValue;
113 end;
114
GetDesignedFormnull115 function TfrFormBackgroundForMDI.GetDesignedForm: IDesignedForm;
116 begin
117 Result := FDesignedForm as IDesignedForm;
118 end;
119
120 constructor TfrFormBackgroundForMDI.Create(const ADesignedForm: IDesignedForm);
121 begin
122 inherited Create(nil);
123 FDesignedForm := ADesignedForm;
124 RefreshValues;
125 end;
126
127 procedure TfrFormBackgroundForMDI.RefreshValues;
128 begin
129
130 end;
131
132 end.
133
134