![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
перемещение контрола за всю клиентскую область
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