Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Перетаскивание формы


Автор: Dayana 12.11.2002, 18:32
Какой event наступает, когда перетаскиваешь мышкой форму MDIChild за caption?

Автор: rhf 12.11.2002, 19:36
возможно WM_SYSCOMMAND с wParam=SC_DRAGMOVE ($F012)

Автор: man2002ua 12.11.2002, 19:39
сообщение WM_MOVING;
определяй procedure WM (var m:TMessage) ;message WM_MOVING;
в обработке

procedure TForm2.WM (var m:TMessage);
var t : ^TRECT;
begin
 t := pointer(m.LParam);
 caption := IntToStr(t^.left) + ' ' + IntToStr(t^.top);
end;

и усё  :colgate

Автор: Dayana 12.11.2002, 20:57
Спасибо! :)

Автор: Song 12.11.2002, 21:34
А может просто WM_NCHITTEST ?

Автор: Dayana 12.11.2002, 23:57
WM_NCHITTEST срабатывает на движение мышки вне клиенской области...

Автор: Song 13.11.2002, 02:35
С каких это пор caption стал у нас клиентской областью окна?  :)

Автор: Dayana 13.11.2002, 03:13
Цитата(Song @ 12.11.2002, 18:35)
С каких это пор caption стал у нас клиентской областью окна?  :)

так я и говорю - ВНЕ клиенской... :)

У меня еще проблема, не могу никак сделать активной MDIChild форму.
SetFocus, SetActiveWindow, WM_MDIACTIVATE не имеют эффекта. Например посылаю WM_MDIACTIVATE, сообщение доходит, а форма активной не становится...

Автор: Song 13.11.2002, 03:28
Так или лыжи не едут или одно из двух...:

Caption - НЕклиентская область. Так? Так.

WM_NCHITTEST - ловить мышь на НЕклиентской области. Так? Так.
Так что я прав. Даяна, а ты нет :)

Автор: Song 13.11.2002, 03:29
Попробуй SetForeGroundWindow()

Автор: Dayana 13.11.2002, 19:15
Цитата(Song @ 12.11.2002, 19:28)
Так или лыжи не едут или одно из двух...:

Caption - НЕклиентская область. Так? Так.

WM_NCHITTEST - ловить мышь на НЕклиентской области. Так? Так.
Так что я прав. Даяна, а ты нет :)

Ты совершенно прав! :)
Только WM_NCHITTEST хорошо обрабатывать, когда нажимаешь на мышку на неклиенской области или бросаешь ее там, или двигаешь ее там же. А вот когда двигаешь мышку вместе с неклиенской областью (caption), т.е. захватив ее мышкой, то WM_NCHITTEST не помогает.

Автор: Dayana 13.11.2002, 19:15
Цитата(Song @ 12.11.2002, 19:29)
Попробуй SetForeGroundWindow()

Спасибо, попробую...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)