Перемещение оконных элементов управления

Оконные компоненты во время выполнения приложения можно перемещать не используя технологию drag-and-drop. Мы будем использовать связанное с нажатием кнопки мыши событие OnMouseDown.

Расположим на форме компонент Memo. И напишем код обработчика этого компонента OnMouseDown как показано ниже.

procedure TForm1.Memo1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 if Button <> mbLeft then exit;
 ReleaseCapture;
 Memo1.Perform(WM_SYSCOMMAND,$F012,0);
end;

Первоначально мы должны проверить нажата ли левая клавиша мыши? И если нет то выйти из процедуры. При утвердительном ответе вызывается API-функция ReleaseCapture, она обеспечивает компоненту получение потока сообщений связанных с мышью. Конкретно перемещение компонента Memo1 выполняет метод Perform, используя посылку системного сообщения с кодом $F012.

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

Разместим на форме компоненты Edit и Memo. Добавим строку процедуры в разделе interface (выделенная строка).

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Memo1: TMemo;
    procedure MoveWindControl(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); 

Далее в разделе implementation запишем код данной процедуры.

procedure TForm1.MoveWindControl(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button <> mbLeft then exit;
  ReleaseCapture;
  (Sender as TWinControl).Perform(WM_SysCommand, $F012,0)
end;

рисунок добавления процедурыВ инспекторе объектов добавляем ранее записанную процедуру для наших компонентов (компонент Edit и Memo), как показано на рисунке через Инспектор Объектов.

Итог: мы ознакомились на практике с перетаскиванием оконных компонентов.

Понравилась статья? Раскажите друзьям:
Общайтесь со мной

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>