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
{ Private declarations }
public
{ Public declarations }
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;
//str: string;
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; //перемещение началось
//методом BringToFront выдвигаем компонент
//в котором произошло событие не передний план
(Sender as TShape).BringToFront;
end
else //если нажата не левая кнопка мыши
drag:=false; //нет перемещения
end;
procedure TDesignTimeForm.FormDragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
//разрешаем принимать только компонент Shape
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;
//else
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 4 do
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.