Показать сообщение отдельно
  #2  
Старый 17.06.2009, 19:04
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 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;
Ответить с цитированием