Переместить форму без стиля рамки
Как мне переместить форму без полей? Я пытался искать в интернете, но ничего. Большое спасибо.
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;