![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перетаскивание окна за любою его часть мышкой
volph © (2003-03-29 22:46:00)Перетаскивание окна за любою его часть мышкой, как так сделать?
Shaman_Naydak (2003-03-31 19:03:00) [1]type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Memo1: TMemo;
private
procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
end;
procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
begin
inherited;
if Message.Result = HTCLIENT then
Message.Result:=HTCAPTION;
end;
Intell (2003-03-31 15:27:00) [2]Есть ограничение в примере BorisUK, некоторые компоненты на форме не будут работать, если подобное случится, то помести компонент на TPanel. Тогда всё будет полный OK.
BorisUK (2003-03-31 13:54:00) [3]
procedure TSelectDoc_f.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const
SC_DragMove = $F012;
begin
ReleaseCapture;
Perform(WM_SysCommand, SC_DragMove, 0);
end;
BuildeRR (2003-03-31 13:07:00) [4]2Flint: Напиши пожалуста примерчик
Flint (2003-03-31 08:55:00) [5]перехватывай WM_NCHITTEST и делай что хочешь :)
Это гораздо мощнее и правильней чем пример данный Palladin"ом :)
Intell (2003-03-30 14:24:00) [6]var
MX: integer;
MY: integer;
procedure TForm1.form1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Shift<>[ssLeft] then
begin
MX:=X;
MY:=Y;
end else
begin
Left:=Left+X-MX;
Top:=Top+Y-MY;
end;
end;
X-RayMan (2003-03-30 12:14:00) [7]Есть несколько методов, один из них: в OnMouseDown формы написать:
if Button=mbLeft then
Form1.BeginDrag(True);
Есть там еще методы, но я сразу и не вспомню.
Palladin (2003-03-29 22:52:00) [8]http://delphi.mastak.com/cgi-bin/faq.pl?look=1&id=988619881&n=16