
17.06.2009, 19:04
|
Активный
|
|
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
|
|
Так попробуйте.
Код:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
MX, MY, GX, GY: Integer;
begin
if FMouseAction = maMove then
begin
MX := FComponent.X - FMoveStart.X + X;
MY := FComponent.Y - FMoveStart.Y + Y;
if FSnapToGrid then
begin
// перемещение по сетке
GX := Round(MX / FGridX) * FGridX;
GY := Round(MY / FGridY) * FGridY;
FMoveStart := Point(GX - FComponent.X + FMoveStart.X,
GY - FComponent.Y + FMoveStart.Y);
FComponent.X := GX;
FComponent.Y := GY;
end
else
begin
FComponent.X := MX;
FComponent.Y := MY;
FMoveStart := Point(X, Y);
end;
end;
Repaint;
end;
|