Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

перемещение контрола за всю клиентскую область


Antonn ©   (2005-08-07 09:24:00) 

использую код:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
const SC_DRAGMOVE:Longint=$F012;
begin
if Button <> mbRight then begin
 ReleaseCapture;
 SendMessage(Handle, WM_SYSCOMMAND, SC_DRAGMOVE, 0);
end;
end;
работает, перетаскивает форму как и надо, но проблемма в том, что при срабатывании этого кода, не "отвечает" OnMouseUp.
Как это можно исправить?
Спасибо.


Mx   (2005-08-07 13:51:00) [1]

Попробуй убрать ReleaseCapture


Antonn   (2005-08-07 13:26:00) [2]

Lamer@fools.ua ©   (07.08.05 12:29) [5]
может там в исходниках где inherited; пропустили? :)


Lamer@fools.ua   (2005-08-07 12:29:00) [3]

Spy++ показывает, что сообщение WM_LBUTTONUP постится в очередь сообщений в случае [3]. Почему оно не доходит, пока не разобрался.


Lamer@fools.ua   (2005-08-07 11:43:00) [4]

>> Leonid Troyanovsky ©   (07.08.05 11:04) [2]

Хм... буду иметь в виду. Хотя сомневаюсь, что буду использовать. Не люблю недокументированных способов.

>> Antonn ©   (07.08.05 11:15) [3]

> такая же проблемма

Да, действительно. Пока не придумал, как победить. Если придумаю, напишу...


Antonn   (2005-08-07 11:15:00) [5]

Lamer@fools.ua ©   (07.08.05 10:56) [1]
перемещаю форму, и почему извратный? подскажите не извратный.

при использовании:
procedure TForm1.WMNCHitTest (var M:TWMNCHitTest);
begin
 inherited;
 if M.Result = htClient then M.Result := htCaption;
end;
такая же проблемма


Leonid Troyanovsky   (2005-08-07 11:04:00) [6]


> Lamer@fools.ua ©   (07.08.05 10:56) [1]

> >const SC_DRAGMOVE:Longint=$F012;

> Где Вы такое нашли?


Оно недокументировано, но весьма популярно.

--
Regards, LVT.


Lamer@fools.ua   (2005-08-07 10:56:00) [7]

> перемещение контрола за всю клиентскую область
> работает, перетаскивает форму как и надо

Так что двигаете всё-таки: форму или контрол на ней? Если форму, то Вы выбрали дико извратный способ. Если контрол, то тоже.

> const SC_DRAGMOVE:Longint=$F012;

Где Вы такое нашли?

http://search.microsoft.com/search/results.aspx?qu=SC_DRAGMOVE&View=msdn&st=b&c=4&s=1&swc=4


Наверх

Титульная страница Поиск, карта сайта Написать письмо