![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перетащитиь форму не за заголовок [D7, WinXP]
parovoZZ © (2004-06-20 20:10:00)Как сделать сабж? SendMessage (Handle, WM_NCLButtonDown, HTCaption, 0) не подходит, потому как нужно ещё сделать вычисления, пока нажата кнопка мыши.
GuAV (2004-06-20 21:15:00) [21]
> Да не, нужно на апях
А на апях
> Perform(WM_SYSCOMMAND, $F012, 0);
становится SendMessage, тока и всего.
Rouse_ (2004-06-20 21:14:00) [22]> [3] parovoZZ © (20.06.04 20:42)
Позвольте, но где вы видите не API в ответе grom?
parovoZZ (2004-06-20 20:42:00) [23]Да не, нужно на апях. Проблема в том, что сообщение WM_LButtonDown отлавливается и я делаю всё, что нужно, но при отпускании кнопки сообщение WM_LButtonUp игнорируется окном. Не могу понять почему.
grom (2004-06-20 20:37:00) [24]procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND, $F012, 0);
end;
}{enon (2004-06-20 20:22:00) [25]Может так получится:
var //interface
d: boolean;
x0,y0: integer;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
d := true;
x0 := x;
y0 := y;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
d := false;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if d then
begin
Left := Left + x - x0;
Top := Top + y - y0;
end;
end;