unit
DesignTimeFormUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, IniFiles;
type
TDesignTimeForm =
class
(TForm)
Shape1: TShape;
Shape2: TShape;
Shape3: TShape;
Shape4: TShape;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure
Shape1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y:
Integer
);
procedure
FormDragOver(Sender, Source: TObject; X, Y:
Integer
;
State: TDragState;
var
Accept:
Boolean
);
procedure
Shape1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y:
Integer
);
procedure
Shape1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y:
Integer
);
procedure
BitBtn1Click(Sender: TObject);
procedure
BitBtn2Click(Sender: TObject);
private
public
end
;
var
DesignTimeForm: TDesignTimeForm;
x0, y0:
integer
;
drag:
boolean
=
false
;
y:
integer
=
32
;
l1:
integer
=
48
;
l2:
integer
=
168
;
l3:
integer
=
320
;
l4:
integer
=
520
;
implementation
{$R *.dfm}
procedure
TDesignTimeForm
.
Shape1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y:
Integer
);
begin
if
Button=mbLeft
then
begin
x0:=x;
y0:=y;
drag:=
true
;
(Sender
as
TShape).BringToFront;
end
else
drag:=
false
;
end
;
procedure
TDesignTimeForm
.
FormDragOver(Sender, Source: TObject; X,
Y:
Integer
; State: TDragState;
var
Accept:
Boolean
);
begin
Accept:=Source
is
TShape;
end
;
procedure
TDesignTimeForm
.
Shape1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y:
Integer
);
begin
if
drag
then
with
TShape(Sender)
do
begin
if
(Left>
0
)
AND
(Top>
0
)
then
begin
Left:=Left+x-x0;
Top:=Top+y-y0 ;
end
;
if
Left<=(DesignTimeForm
.
ClientWidth-DesignTimeForm
.
ClientWidth)
then
Left:=DesignTimeForm
.
ClientWidth-DesignTimeForm
.
ClientWidth+
1
;
if
Left>=(DesignTimeForm
.
ClientWidth-Width)
then
Left:=DesignTimeForm
.
ClientWidth-Width-
1
;
if
Top<=
0
then
Top:=
1
;
if
Top>=
245
then
Top:=
243
;
end
;
end
;
procedure
TDesignTimeForm
.
Shape1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y:
Integer
);
begin
drag:=
false
;
end
;
procedure
TDesignTimeForm
.
BitBtn1Click(Sender: TObject);
begin
Shape1
.
Top:=y;
Shape2
.
Top:=y;
Shape3
.
Top:=y;
Shape4
.
Top:=y;
Shape1
.
Left:=l1;
Shape2
.
Left:=l2;
Shape3
.
Left:=l3;
Shape4
.
Left:=l4;
end
;
procedure
TDesignTimeForm
.
BitBtn2Click(Sender: TObject);
var
Ini:Tinifile;
i,k,s:
integer
;
str:
string
;
begin
s:=
0
;
for
k:=
0
to
ComponentCount-
1
do
if
Components[k]
is
TShape
then
begin
s:=s+
1
;
end
;
Ini:=TiniFile
.
Create(extractfilepath(Application
.
ExeName)+
'base.ini'
);
for
i:=
1
to
s
do
begin
str:=IntToStr(i);
Ini
.
WriteInteger(
'Shape'
+str,
'Left'
,(FindComponent(
'Shape'
+str)
as
TSHape).Left );
Ini
.
WriteInteger(
'Shape'
+str,
'Top'
,(FindComponent(
'Shape'
+str)
as
TSHape).Top );
Ini
.
WriteInteger(
'Shape'
+str,
'Tag'
,(FindComponent(
'Shape'
+str)
as
TSHape).Tag );
Ini
.
WriteInteger(
'Shape'
+str,
'Height'
,(FindComponent(
'Shape'
+str)
as
TSHape).Height );
Ini
.
WriteInteger(
'Shape'
+str,
'Width'
,(FindComponent(
'Shape'
+str)
as
TSHape).Width);
Ini
.
WriteInteger(
'Shape'
+str,
'Color'
,(FindComponent(
'Shape'
+str)
as
TSHape).Brush
.
Color);
Ini
.
WriteInteger(
'Shape'
+str,
'Shape'
,
Integer
((FindComponent(
'Shape'
+str)
as
TSHape).Shape));
Ini
.
WriteInteger(
'Shape'
+str,
'Style'
,
Integer
((FindComponent(
'Shape'
+str)
as
TSHape).Brush
.
Style));
Ini
.
WriteInteger(
'Shape'
+str,
'ColorPen'
,(FindComponent(
'Shape'
+str)
as
TSHape).Pen
.
Color);
Ini
.
WriteInteger(
'Shape'
+str,
'WidthPen'
,(FindComponent(
'Shape'
+str)
as
TSHape).Pen
.
Width);
end
;
Ini
.
Free;
Close;
end
;
end
.