СообЧа > База Знаний > Программирование > Delphi

Вопрос

У меня есть форма(form2), у которой не ни верхней полосы с кнопками, ни границ. Как мне сделать чтобы по нажатию и удерживанию левой кнопки мыши форма цеплялась и перемешалась с мышкой.

Ответ

Это делается просто. Обьясняю саму идею: сначала обьявляем некую глобальную переменную, которой мы будем присваивать true если окно тащат, и false если нет, и еще две глобальных переменных, где будем хранить старые координаты окна.
В OnMouseDown мы будем давать булевой переменной — true, OnMouseUp — false, а в OnMouseMove — мы будем перемещать окно. Вот и все. А теперь в коде.

private
{ Private declarations }
Dragging : Boolean;
OldLeft, OldTop: Integer;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button=mbLeft then
begin
Dragging := True;
OldLeft := X;
OldTop := Y;
end;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Dragging then
begin
Left := Left+X-OldLeft;
Top := Top+Y-OldTop;
end;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Dragging:=false;
end;


Из конференции Expert_FAQ



Copyright © 2000-2004 Сообщество Чайников
Контактная информация