Перемещение формы не за заголовок. Вариант 5
{Определение в главной форме...}
{... и реализация обработчика события}
procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
Это заставляет Windows думать, что курсор мыши находится в области заголовка окна. Но это может повлечь за собой другую проблему, поскольку предполагается, что мышь будет считаться расположенной в области заголовка при любом ее нахождении в области клиента, тем не менее, это решение элегантно, поскольку при перетаскивании формы ее границы изменяются на "резиновые". Если это совсем у вас не работает, можно попробовать работать с другим сообщением, который может дать тот же результат.
- Выключите все BorderIcons формы.
- Убедитесь в том, что заголовок является пустой строкой.
- BorderStyle = bsNone
- Перекройте процедуру формы CreateParams как показано ниже:
type
TForm1 = class(TForm){ ...
{... другой код ...}
implementation
{...}
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
{...}
end.
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Self.Height);
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Не забудьте назначить эти методы каждому элементу управления вашей формы, например так:
Self.Panel1.OnMouseDown := Self.OnMouseDown;
