Delphi событие перемещения формы - Перетаскивание компонентов в окне приложения

Решить ее можно тремя способами может есть и больше, но я знаю только три. Его суть заключается в том, что свойства Left и Top картинки изменяются на разницу между начальными и конечными координатами нажатия и отпускания мыши соответственно. Этот способ самый простой и надежный, но у него есть один недостаток: Тем не менее мы этот способ рассмотрим.

Не забудьте положить на форму Image и вставить в нее какую-нибудь картинку. Для начала необходимо объявить глобальные переменные они объявляются в разделе Implementation x0, y0: И еще нам понадобится переменная move типа boolean, чтобы нам отличать перемещение мыши над картинкой, от попытки ее сдвинуть.

движение формы

Эти объявления делаются примерно так участок кода:. В этом участке кода проверяется какой кнопкой нажали на картинку. Если левой, то запоминаем координаты, а если любой другой, то перемещать. Теперь напишем обработчик OnMouseMove для нашей картинки:. Здесь все очень. Когда кнопка отпускается, то переменной move присваивается значение false, чтобы до следующего клика по картинке ее нельзя было сдвинуть. Этот способ довольно прост, как для понимания, так и для реализации.

Но такой же алгоритм перемещения можно реализовать немного красивее. У некоторых компонентов, в том числе и Image, есть такая классная процедура SetBounds Left,Top,Width,Heightкоторая может изменять сразу все четыре параметра. Таким образом событие OnMouseMove можно изменить так:. Но есть еще один очень интересный выход: Для этого нам понадобится еще одна глобальная переменная: TRect, которая будет хранить параметры картинки.

Теперь слегка изменим обработчики событий для картинки. Таким образом все в целом будет выглядеть так:. Поскольку DrawFocusRect рисует рамку методом Xor, то при повторном вызове этой функции с теми же параметрами, рамка стирается.

Этот очень красивый метод добавит в ваши программы много интересного. Программирование в DELPHI — Web, MySQL. TWebBrowser Indy Synapse EmbeddedWB Меню События FAQ. Windows Процессы потоки Рабочий стол Файлы Дата и время FAQ. Клавиатура, мышка Диски, дисковод Сеть, модем Видео, аудио Монитор Принтер, порты. Процедуры функции Коды клавиш Горячие клавиши Диалоговые окна. Перемещение Image по форме во время работы приложения в Delphi.

Эти объявления делаются примерно так участок кода: Теперь напишем обработчик OnMouseMove для нашей картинки: Integer ; begin if move then begin image1.

Integer ; begin move: Таким образом событие OnMouseMove можно изменить так: Таким образом все в целом будет выглядеть так: Integer ; begin if move then begin Form1. Integer ; begin Form1.

Перемещение Image по форме во время работы программы

DrawFocusRect rec ; with image1 do begin setbounds rec. Как запретить кнопку Close [x] в заголовке окна? Как создать свою кнопку в заголовке формы на Caption Bar в Delphi? Как создать использовать новую форму курсора в Delphi?