Форум: "WinAPI";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
ВнизКак отловить перемещение мыши по экрану Найти похожие ветки
← →
Micah'GF (2004-05-29 10:44) [0]Нужно сделать чтобы форму можно было таскать не за заголовок, а за любое место...
← →
Stany © (2004-05-29 11:02) [1]Нужно объявить процедуру в частных объявлениям (после ключевого слова Private):
private
{ Private declarations }
procedure WMNCHitTest (var M: TWMNCHitTest); message wm_NCHitTest;
В области implementation описываем процедуру так:
implementation
{$R *.DFM}
procedure TForm1.WMNCHitTest (var M:TWMNCHitTest);
begin
inherited;
if M.Result = htClient then
M.Result := htCaption;
end;
Мы выдаём клиентскую область окна за заголовочную область.
← →
GuAV © (2004-05-29 11:11) [2]Stany © (29.05.04 11:02) [1]
А мне этот способ не нравится, т.к.
1. Для WinControl надо делать htTransparent
2. У label-ов хинты не показываются
← →
Stany © (2004-05-29 11:13) [3]а так:
Обрабатываем OnMouseDown:
ReleaseCapture;
Perform(WM_SYSCOMMAND, $F012, 0);
← →
grom (2004-05-29 13:30) [4]var
Form1: TForm1;
b: boolean;
iX,iY: integer;
....
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin if b then begin
Left:= Left + x - iX;
Top:= Top + y - iy;
end;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
b:= true;
iX:= x;
iY:= y;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
b:= false;
end;
← →
GuAV © (2004-05-29 14:42) [5]
> а так:
>
> Обрабатываем OnMouseDown:
> ReleaseCapture;
> Perform(WM_SYSCOMMAND, $F012, 0);
А так - хорошо. Спасибо. Думаю автору ветки тоже понравится.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.031 c