![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перетаскивание формы! [D6, XP]
Ladan © (2006-05-27 01:07:00)Доброго времени суток! Помогите решить проблему!
Как сделать так что бы нажав на картинку и удерживая кнопку мыши можно было перетаскивать всю форму? Если таковое возможно. Заранее спасибо!
unknown (2006-05-27 21:33:00) [1]
> Ladan (27.05.06 01:07)
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: integer);
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND, $F012, 0);
end;
Ladan (2006-05-27 15:52:00) [2]Спасибо! Очень помогли!!!
TUser (2006-05-27 09:55:00) [3]Поймать WM_NCHITTEST и выставить там флажок htCaption. Подробности в справку и яндексе.
Loginov Dmitry (2006-05-27 09:17:00) [4]Не пойму, зачем нужна лишняя процедура OnMouseUp и какой-то флаг. Ведь в OnMouseMove всегда можно воспользоваться переменной Shift.
Джо (2006-05-27 01:17:00) [5]
implementation
{$R *.dfm}
var
PrevPoint: TPoint;
Moving: Boolean;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
PrevPoint := Mouse.CursorPos;
Moving := True;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Moving := False
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Moving then
begin
SetBounds(
Left + (Mouse.CursorPos.X - PrevPoint.X),
Top + (Mouse.CursorPos.Y - PrevPoint.Y),
Width,
Height
);
PrevPoint := Mouse.CursorPos;
end
end;
Rial (2006-05-27 01:14:00) [6]1. Кидаешь на формы рисунок.
2. Переменные глобальные:
Var Flag:Boolean;
BX,BY:Integer;
В событиях рисунка пишешь:
MouseDown:
begin
F:=True;
BX:=X;
BY:=Y;
end;
MouseUp:
begin
F:=False;
end;
MouseMove:
begin
If (F) then begin
Left:=Left+X-BX;
Top:=Top+Y-BY;
end;
end;