Delphi перемещение формы

Как перетаскивать форму, зажав левую кнопку мыши на компоненте?

Если вы решили создать форму программы без заголовка окна, то нужно подумать о том, как будет реализована возможность перетаскивания этой формы в нужное место. Ведь перемещение окна происходит именно благодаря панели заголовка, по которой можно щелкнуть левой кнопкой мыши, и удерживая её зажатой, перетащить окно в нужное место экрана.

Если же панели заголовка окна не будет, то пользователь не сможет захватить окно программы и переместить его туда, где ему будет удобно с ним работать.

Потому сейчас я покажу вам один из вариантов решения данной проблемы.

Створення візуальної частини програми

Delphi форма и Label

Создайте форму без заголовка окна:

  1. В компиляторе Delphi выберите File → New → VCL Forms Application – Delphi.
  2. Установите свойство созданной формы Border Style → bsNone.

Поместите на форму компонент для отображения текста (например Label):

  1. В палитре инструментов, в блоке компонентов Standart, сделайте клик левой кнопкой мыши по TLabel.
  2. Щелкните левой кнопкой мыши на форме, чтобы разместить на ней компонент Label.

Переходим к программированию

Нажмите F12,, чтобы открыть редактор кода и в разделе Private объявите две переменные:

  1. FDragging: Boolean – эта переменная булевого типа будет нужна нам для отслеживания того, происходит ли процесс перетаскивания формы в данный момент.
  2. FStartDragPos: TPoint – эта переменная необходима для хранения начальных координат мыши в момент начала перетаскивания формы.

В инспекторе объектов выберите Label, ведь программный код мы будем писать именно для этого компонента.

Перейдите на вкладку Events, создайте событиеOnMouseDown и для этого события введите следующий код:

if Button = mbLeft then
begin
   FDragging := True;
   FStartDragPos := Point(X, Y);
end;

Этим кодом, когда пользователь щелкнет мышкой по компоненту Label, мы проверяем, щелкнул он левой или правой кнопкой. Если он сделал клик левой кнопкой мыши, то для переменной FDragging устанавливается значение True и происходит запись текущих координат формы в переменную FStartDragPos.

Теперь создайте событие OnMouseMove и введите для него следующий код:

if FDragging then
begin
  Left := Left + (X - FStartDragPos.X);
  Top := Top + (Y - FStartDragPos.Y);
end;

Этим кодом, если пользователь перемещает курсор мышки, мы проверяем значение переменной FDragging. Если FDragging имеет значение True, то происходит изменение свойств формы Left и Top:

  • Разница между X и FStartDragPos.X определяет, на сколько пикселей переместилась мышь влево или вправо.
  • Разница между Y и FStartDragPos.Y определяет, на сколько пикселей переместилась мышь вверх или вниз.
  • Значение Left и Top формы обновляются на величину этих разниц, что приводит к движению формы вслед за курсором мыши.

И последнее событие, которое нужно создать – OnMouseUp. Для неё напишите следующий код:

FDragging := False;

Здесь мы устанавливаем значение переменной FDragging – False. Ведь когда пользователь не удерживает зажатой кнопку мыши (отпустил её), нам не нужно отслеживать координаты формы и перемещать её вслед за курсором.

Видео по теме урока

Delphi Функции

Функция Abs – предназначена для получения абсолютной величины числа (модуль)

Функция Addr – возвращает адрес переменной, функции или процедуры

Функция AnsiCompareStr – сравнение двух строк на равенство

Функция AnsiCompareText – сравнение двух строк на равенство

Функция AnsiContainsStr – возвращается истина, если строка содержит подстроку

Функция AnsiEndsStr – возвращается истина, если строка заканчивается подстрокой

Функция AnsiIndexStr – сравнивает строку со списком строк, возвращает соответствующий индекс

Функция AnsiLeftStr – извлекает символы с левой стороны строки

Функция AnsiLowerCase – символы верхнего регистра изменяются в строку со строчными буквами

Функция AnsiMatchStr – возвращается истина, если строка точно соответствует какой-либо строке из списка

Функция AnsiMidStr – возвращает подстроку из средних символов строки

Функция AnsiPos – находит позицию одной строки в другой

Функция AnsiReplaceStr – заменяет часть одной строки другой

Функция AnsiReverseString – переворачивает последовательность символов в строке

Функция AnsiRightStr – извлечение символов с правой стороны строки

Функция AnsiStartsStr – возвращает True, если строка начинается с подстроки

Функция AnsiUpperCase – символы нижнего регистра изменяются на символы верхнего регистра

Функция ArcCos – арккосинус числа, возвращается в радианах

Функция ArcSin – арксинус числа, возвращается в радианах

Функция ArcTan – арктангенс числа, возвращается в радианах

Функция Assigned – осуществляет проверку функциональности указателей, объектов, методов

Функция BeginThread – начинает отдельный поток выполнения кода

Функция Bounds – передаёт координаты вершин объекта типа TRect (прямоугольник)

Функция CelsiusToFahrenheit – конвертирует значение температуры из Цельсия в Фаренгейта

Функция ChangeFileExt – изменяет расширение имени файла

Функция Chr – конвертирует целое число в символ

Функция Concat – cоединяет несколько строк в одну

Функция Convert – преобразует одну величину измерения в другую

Функция Copy – создает копию части строки или части массива

Функция Cos – косинус числа

Функция CreateDir – создаёт директорию

Функция CurrToStr – преобразует денежную величину в строку

Функция CurrToStrF – преобразует денежную величину в строку с форматированием

Функция Date – возвращает текущую дату

Функция DateTimeToFileDate – преобразует значение TDateTime в формат date/time формат файла

Функция DateTimeToStr – конвертирует значение даты и времени TDateTime в строку

Функция DateToStr – преобразует значение даты TDateTime в строку

Функция DayOfTheMonth – дает день месяца для значения TDateTime (ISO 8601)

Функция DayOfTheWeek – возвращает индекс дня недели для значения TDateTime (ISO 8601)

Функция DayOfTheYear – выдает день года для значения TDateTime (ISO 8601)

Функция DayOfWeek – выдает индекс дня недели для значения TDateTime

Функция DaysBetween – выдает целое число дней между 2 датами

Функция DaysInAMonth – выдает число дней в месяце

Функция DaysInAYear – выдает число дней в году

Функция DaySpan – выдает дробное число дней между 2 датами

Функция DegToRad – преобразовывает значения градусов в радианы

Функция DeleteFile – удаляет файл, указанный в параметре

Функция DirectoryExists – возвращает True, если указанная директория существует

Функция DiskFree – выдает число свободных байтов на указанном диске

Функция DiskSize – выдает размер указанного диска в байтах

Функция DupeString – создает строку, содержащую копии подстроки

Функция EncodeDate – формирует значение TDateTime из значений года, месяца и дня

Функция EncodeDateTime – формирует значение TDateTime из значений времени и дня

Функция EncodeTime – формирует значение TDateTime из значений часа, минуты, секунды и миллисекунды

Функция EndOfADay – генерирует значение TDateTime, установленное на самый конец дня

Функция EndOfAMonth – генерация значения TDateTime, установленное на самый конец месяца

Функция Eof – возвращает True, если позиция курсора находится в конце файла открытого с помощью Reset

Функция Eoln – возвращает True, если позиция курсора находится в конце строки

Функция Exp – выдаёт экспоненту числа

Функция ExtractFileDir – извлекает из полного имени файла название папки

Функция ExtractFileDrive – извлекает из полного имени файла название диска

Функция ExtractFileExt – извлекает из полного имени файла его расширение

Функция ExtractFileName – извлекает из полного имени файла краткое имя файла

Функция ExtractFilePath – извлекает из полного имени файла название патча

Функция FahrenheitToCelsius – конвертирует температуру из Фаренгейта в Цельсий

Функция FileAge – получение даты/время последнего изменения файла, не открывая его

Функция FileDateToDateTime – конвертирует формат даты/времени файла в значение TDateTime

Функция FileExists – возвращает True если указанный файл существует

Функция FileGetAttr – выдаёт атрибуты файла

Функция FilePos – даёт позицию файла в двоичном или текстовом файле

Функция FileSearch – поиск файла в одной или более папках

Функция FileSetAttr – устанавливает атрибуты файла

Функция FileSetDate – установка даты и времени последнего изменения файла

Функция FileSize – выдает размер открытого файла в записях

Функция FindClose – закрывает успешный FindFirst поиск файла

Функция FindCmdLineSwitch – определяет, был передан некоторый параметр выключатель

Функция FindFirst – находит все файлы, соответствующие маске файла и атрибутов

Функция FindNext – находит следующий файл после успешного FindFirst

Функция FloatToStrF – преобразует значение с плавающей запятой в строку с форматированием

Функция ForceDirectories – создаёт новый путь каталогов

Функция Format – расширенное форматирование чисел и текста в строке

Функция FormatCurr – расширенное форматирование значений валюты в строку

Функция FormatDateTime – расширенное форматирование переменной TDateTime в строку

Функция FormatFloat – расширенное форматирование числа с плавающей запятой в строку

Функция Frac – дробная часть числа с плавающей запятой

Функция GetCurrentDir – возвращает текущий каталог (диск плюс каталог)

Функция GetLastError – выдаёт код ошибки последнего неудачного Windows API вызова

Функция GetMem – получает указанное число байтов памяти

Функция Hi – возвращает байт старшего разряда от типа Integer

Функция High – возвращает самое высокое значение типа или переменной

Функция IncDay – приращивает переменную типа TDateTime на + или - число дней

Функция IncMillisecond – приращивает переменную типа TDateTime на + или - число миллисекунд

Функция IncMinute – приращивает переменную типа TDateTime на + или - число минут

Функция IncMonth – увеличивает TDateTime переменную на некоторое число месяцев

Функция IncSecond – приращивает переменную типа TDateTime на + или - число секунд

Функция IncYear – увеличивает TDateTime переменную на количество лет

Функция InputBox – отображает диалог, который просит пользователя о вводе текста, со значением по умолчанию

Функция InputQuery – отображает диалог, который просит пользователя о вводе текста

Функция Int – целая часть числа с плавающей точкой

Функция IntToHex – преобразует целое число в шестнадцатеричную строку

Функция IntToStr – конвертирует целое число в строку

Функция IOResult – содержит возвращаемый код последней операции ввода/вывода

Функция IsInfinite – проверяет, является ли число с плавающей точкой бесконечным

Функция IsLeapYear – возвращает True, если данный календарный год високосный

Функция IsMultiThread – возвращает True, если код выполняет множество потоков

Функция IsNaN – выясняет, содержит ли число с плавающей запятой настоящее число

Функция LastDelimiter – находит последнюю позицию указанных символов в строке

Функция Length – возвращает число элементов в массиве или строке

Функция Ln – выдает натуральный логарифм числа

Функция Lo – возвращает младший байт целого числа (2-байтового)

Функция Log10 – вычисляет логарифм числа с основанием 10

Функция Low – возвращает самое низкое значение типа или переменной

Функция Max – выдает максимальное число из двух целых значений

Функция Mean – выдает среднее число из набора чисел

Функция MessageDlg – отображает сообщение, знак и выбираемые кнопки

Функция MessageDlgPos – отображает сообщение и кнопки в заданной позиции экрана

Функция Min – выдает минимальное из двух целых значений

Функция MonthOfTheYear – выдает месяц года для значения TDateTime

Функция Now – выдает текущую дату и время

Функция Odd – проверяет, является ли целое число нечетным

Функция Ord – порядковое значение целого числа, символа или перечисления

Функция ParamCount – выдает число параметров переданной текущей программе

Функция ParamStr – возвращает один из параметров, используемых для запуска текущей программы

Функция Pi – математическая константа

Функция Point – генерирует значение TPoint из значений X и Y

Функция PointsEqual – сравнивает два значения TPoint на предмет равенства

Функция Pred – уменьшает порядковую переменную

Функция Printer – возвращает ссылку на глобальный объект Printer

Функция PromptForFileName – показывает диалог, позволяющий пользователю выбрать файл

Функция PtInRect – проверяет, находится ли точка в пределах прямоугольника

Функция RadToDeg – преобразовывает значение радиана в градусы

Функция Random – генерирует случайное число с плавающей запятой или целое число

Функция RandomRange – генерирует произвольное число в пределах введённого диапазона

Функция RecodeDate – изменяет только дату переменной TDateTime

Функция RecodeTime – изменяет только время переменной TDateTime

Функция Rect – создаёт объект TRect (прямоугольник) с указанием 2 точек или 4 координат

Функция RemoveDir – удалить директорию

Функция RenameFile – переименование файла или директории

Функция Round – округление чисел с плавающей запятой до целого числа

Функция SeekEof – пропускает символы, пока не встретится конец файла

Функция SeekEoln – пропускает символы, пока не встретится конец текущей строки или файла

Функция SelectDirectory – выводит диалоговое окно, с помощью которого пользователь может выбрать директорию

Функция SetCurrentDir – изменяет текущую директорию

Функция ShellExecute – открывает или выводит на печать указанный файл

Функция Sin – возвращает синус числа

Функция SizeOf – возвращает занимаемый размер типа или переменной в байтах

Функция Slice – создает часть массива с параметром "Открытый Массив"

Функция Sqr – возвращает квадрат числа

Функция Sqrt – возвращает квадратный корень числа

Функция StringOfChar – создает строку из одного символа, повторенного много раз

Функция StringReplace – заменяет одну или несколько подстрок, найденных в заданной строке

Функция StringToWideChar – преобразует обычную строку в WideChar-буфер с завершающим 0

Функция StrScan – ищет заданные символы в строке

Функция StrToCurr – преобразует числовую строку в денежное выражение

Функция StrToDate – конвертирует строку с датой в значение типа TDateTime

Функция StrToDateTime – конвертирует строку с датой и временем в значение типа TDateTime

Функция StrToFloat – преобразует числовую строку в значение с плавающей запятой

Функция StrToInt – преобразует строку с целым значением в Integer

Функция StrToInt64 – преобразует строку с целым значением в Int64

Функция StrToInt64Def – преобразует строку с целым значением в Int64, учитывая значение по умолчанию

Функция StrToIntDef – преобразует строку в значение с типом Integer, учитывая значение по умолчанию

Функция StrToTime – конвертирует строку с временем в значение с типом TDateTime

Функция StuffString – заменяет часть одной строки на другую

Функция Succ – инкрементирует порядковую переменную

Функция Sum – находит сумму элементов массива, состоящего из чисел с плавающей точкой

Функция Tan – тангенс числа

Функция Time – возвращает текущее время

Функция TimeToStr – конвертирует значение времени типа TDateTime в строку

Функция Tomorrow – возвращает дату завтрашнего дня

Функция Trim – удаляет начальные и конечные пробелы в строке

Функция TrimLeft – удаляет начальные пробелы в строке

Функция TrimRight – удаляет конечные пробелы в строке

Функция Trunc – целая часть числа с плавающей запятой

Функция VarType – возвращает текущий тип Variant переменной

Функция WideCharToString – копирует строку WideChar, заканчивающуюся нулём, в нормальную строку

Функция WrapText – добавляет перенос строки в строку, чтобы имитировать перенос слов

Функция Yesterday – возвращает вчерашнюю дату в местном часовом поясе

Delphi Процедуры

Процедура Abort – прерывает обработку команд и выходит к последнему исключительному блоку

Процедура Append – открывает текстовый файл, для добавления записей в файл (добавляет в конец файла)

Процедура AssignFile – связывает дескриптор файла с бинарным или текстовым файлом

Процедура AssignPrn – обрабатывает принтер как текстовый файл (простой способ печати текста)

Процедура Beep – делает звук гудка

Процедура BlockRead – читает блок записей данных из нетипизированного двоичного файла

Процедура BlockWrite – записывает блок записей данных в нетипизированный двоичный файл

Процедура Break – выполняет выход из одного цикла

Процедура ChDir – выбор диска и директории (папки), в которой будет производиться работа

Процедура CloseFile – закрывает открытый файл

Процедура Continue – заставляет перейти к следующей итерации цикла

Процедура DateTimeToString – огромные возможности форматирования даты в строку

Процедура Dec – декремент порядковой переменной

Процедура DecodeDate – извлекает значения года, месяца, дня из TDateTime переменной

Процедура DecodeDateTime – разбивает TDateTime переменную на ее части даты/времени

Процедура DecodeTime – разбивает значение TDateTime на отдельные значения времени

Процедура Delete – удаляет часть символов из строки

Процедура Dispose – очищает память на которую указывает указатель

Процедура EndThread – заканчивает поток с кодом завершения

Процедура Erase – стирает файл

Процедура Exclude – исключает значение из переменной набора (множества)

Процедура Exit – осуществляет выход из функции или процедуры

Процедура FillChar – заполняет раздел памяти значением байта или символа-заполнителя

Процедура Flush – сбрасывает буферизованные данные текстового файла в файл

Процедура FreeAndNil – освобождение памяти объекта и установка его в nil

Процедура FreeMem – освобождает память, используемую переменной

Процедура GetDir – получает текущий каталог (диск плюс путь) для указанного диска

Процедура GetLocaleFormatSettings – получает региональные значения для безопасных потоков функций

Процедура Halt – заканчивает программу с дополнительным диалогом

Процедура Inc – увеличивает порядковую переменную

Процедура Include – включает значение во множество переменных

Процедура Insert – вставляет строку в другую строку

Процедура MkDir – создаёт каталог

Процедура Move – копирует байты данных из источника в место назначения

Процедура New – создаёт новую переменную типа указатель

Процедура ProcessPath – разделяет строку диск/путь/имя файла на ее составляющие части

Процедура Randomize – устанавливает генератор случайного числа на следующее значение

Процедура Read – позволяет прочитать данные из двоичного или текстового файла

Процедура ReadLn – позволяет прочитать полную строку данных из текстового файла

Процедура Rename – переименование файла

Процедура ReallocMem – позволяет изменить размер существующего блока памяти

Процедура ReplaceDate – изменяет только часть даты TDateTime переменной

Процедура ReplaceTime – изменяет только часть времени TDateTime переменной

Процедура Reset – открывает текстовый файл для чтения, или двоичный файл для чтения/записи

Процедура ReWrite – открывает текстовый или двоичный файл для записи

Процедура RmDir – удаление каталога

Процедура RunError – заканчивает программу с диалогом ошибки

Процедура Seek – перемещает указатель в двоичном файле в новую позицию

Процедура SetLength – изменяет размер строки или размер динамического массива

Процедура SetString – копирует символы из буфера в строку

Процедура ShowMessage – показывает простое диалоговое окно с кнопкой ОК, содержащее заданную строку

Процедура ShowMessageFmt – отображает отформатированные данные в простом диалоговом окне с кнопкой ОК

Процедура ShowMessagePos – показывает строку в простом диалоговом окне размещенном в заданном месте

Процедура Str – конвертирует целое число или число с плавающей точкой в строку

Процедура Truncate – уменьшает размер файла, удаляя все данные после текущей позиции

Процедура Val – конвертирует числовые строки в целое число, или число с плавающей запятой

Процедура Write – записывает данные в бинарный или текстовый файл

Процедура WriteLn – записывает законченную строку данных в текстовый файл

Main Menu