Вступление
Технология Drag&Drop давно стала стандартом пользовательского интерфейса. Рассмотрим несколько примеров её использования, основанных на использовании метода Perform. Обратите внимание, что перемещение контролов происходит относительно родительских контролов.
Задача 1
Перетаскивание формы без заголовка. Актуально для форм, построенных на регионах.Решение
procedure TForm1.FormMouseDown(Sender: TObject; button: tmousebutton;shift: tshiftstate; x, y: integer);
const
sc_dragmove = $F012;
begin
releasecapture;
twincontrol(application.mainform).perform(wm_syscommand, sc_dragmove, 0);
end;
Комментарий
Назначив обработчик формы с приведённым кодом мы получаем возможность перетаскивать форму, кликая по самой форме приложения. Если на форме находятся другие компоненты (например TLabel, TImage), добавьте им тот же самый обработчик события (ОnMouseDown), чтобы перетягивать форму, кликая по этим компонентам.
Задача 2
Перетягивание контролов на формеРешение
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
const
SC_DragMove = $F012; { a magic number }
begin
ReleaseCapture;
panel1.perform(WM_SysCommand, SC_DragMove, 0);
end;
Комментариев нет:
Отправить комментарий