Поскольку в приложении, содержащем нестандартное окно, как
правило, заголовок скрыт, то переместить его на новое место оказыва-
ется невозможным. Поэтому возникает задача реализации перемеще-
ния окна мышью за любую область внутри окна: необходимо допол-
нить функциональность стандартной процедуры TControl.DragDrop,
отвечающей за обработку положения указателя мыши над формой.
Создадим описание этой процедуры в объявлении класса формы
TfmFigura (добавленная строка выделена жирно в листинге):
type
TfmFigura = class(TForm)
Image1: TImage;
procedure FormCreate(Sender: TObject);
procedure DragDrop(var dr: TWMNCHitTest);
message wm_NCHitTest;
Тип TWMNCHitTest — это структура, содержащая информацию о
положении указателя мыши. Не вдаваясь более в технические детали,
создадим тело процедуры в разделе implementation:
procedure TfmFigura.DragDrop(var dr:TWMNCHitTest);
begin
inherited; //наследует реализацию стандартной
//процедуры DragDrop
//Проверим, был ли щелчок мыши над областью формы
if dr.Result=htClient
then dr.Result:=HTCAPTION;//перенаправляем щелчок
//на заголовок
end;
Запустив приложение, можно убедиться, что окно перемещается за
любую область внутри окна.
Автор: Соколова Ю.С.
|