| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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; и усё |
| Автор: 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 | ||
так я и говорю - ВНЕ клиенской... У меня еще проблема, не могу никак сделать активной 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 | ||
Ты совершенно прав! Только WM_NCHITTEST хорошо обрабатывать, когда нажимаешь на мышку на неклиенской области или бросаешь ее там, или двигаешь ее там же. А вот когда двигаешь мышку вместе с неклиенской областью (caption), т.е. захватив ее мышкой, то WM_NCHITTEST не помогает. |
| Автор: Dayana 13.11.2002, 19:15 | ||
Спасибо, попробую... |