Переместить форму без стиля рамки

Как мне переместить форму без полей? Я пытался искать в интернете, но ничего. Большое спасибо.

2 ответа

Решение

Вы можете перетащить форму, используя любой элемент управления, включая себя.

Используя следующий пример, вы можете переместить форму, щелкнув ее холст и перетащив. Вы можете сделать то же самое с панелью в форме, поместив тот же код в событие MouseDown панели, что позволит вам создать собственную панель псевдо-титров.

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
const
  SC_DRAGMOVE = $F012;
begin
  if Button = mbLeft then
  begin
    ReleaseCapture;
    Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);
  end;
end;

Если вы имеете в виду перетаскивание окна мышью, вы можете переопределить WM_NCHITTEST обработка сообщений и возврат HTCAPTION для области перетаскивания. Ниже перетащите окно в верхние 30 пикселей для insance:

type
  TForm1 = class(TForm)
  private
  protected
    procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
  end;

..

procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
var
  Pt: TPoint;
begin
  Pt := ScreenToClient(SmallPointToPoint(Message.Pos));
  if Pt.Y < 30 then
    Message.Result := HTCAPTION
  else
    inherited;
end;
Другие вопросы по тегам