{Так можно таскать мышкой TPanel по форме в run-time'е.
Поместите на форму TPanel и напишите обработчик события OnMauseDown,
запустите программу и задвинте эту панель подальше.}procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const
SC_DRAGMOVE = $F012;
begin
ReleaseCapture;
{а если сюда написать Form1, то можно таскать форму по экрану}
Panel1.Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);
end;
на самом деле таким образом можно таскать по форме любые визуальные компоненты.
Программный код на Delphi, демонстрирующий перемещение панели вокруг формы с помощью событий мыши.
Идея заключается в обработке события OnMouseDown панели, которое вызывается при клике пользователем левой кнопкой мыши на панели. В этом обработчике код вызывает ReleaseCapture, чтобы освободить любую захваченную мышь, которую может держать другой контроль или форма.
Затем код использует метод Perform для имитации системного команды (WM_ SYSCOMMAND) с флагом перемещения (SC_DRAGMOVE). Это сообщает Windows начать отслеживать движение мыши и позволить пользователю переместить панель вокруг формы.
Разбивка кода:
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);: Это обработчик события OnMouseDown панели.
ReleaseCapture;: Освобождает любую захваченную мышь, которую может держать другой контроль или форма.
Panel1.Perform( WM_ SYSCOMMAND, SC_DRAGMOVE, 0 );: Имитация системного команды (WM_SYSCOMMAND) с флагом перемещения (SC_DRAGMOVE). Это начинает отслеживать движение мыши и позволяет пользователю переместить панель вокруг формы.
Обратите внимание, что этот код может быть применен не только к панелям, но и к любому другому визуальному компоненту на форме, например, кнопкам, меткам или даже самой форме.
Перемещение мышью панели на форме во время выполнения программы позволяет задвинуть ее подальше с помощью обработчика события OnMouseDown и использования метода Perform.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.