Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как перемещать компонент во время работы программы

Delphi , Синтаксис , Drag and Drop

Как перемещать компонент во время работы программы

Автор: Олег Кулабухов

Беседуют два программера:
- Блин, вчера моя жена мне позвонила, а модем трубку снял...
- И че??????
- Да болтали полтора часа...

Нижеприведенный пример показывает как перемещать компонент при перетаскивании его нажатой левой кнопкой мыши при нажатом Ctrl.


procedure TForm1.Button1MouseDown(Sender: TObject; Button:
  TMouseButton; Shift: TShiftState; X, Y: Integer);
{$IFNDEF WIN32}
var
  pt: TPoint;
{$ENDIF}
begin
  if ssCtrl in Shift then
  begin
    ReleaseCapture;
    SendMessage(Button1.Handle, WM_SYSCOMMAND, 61458, 0);
{$IFNDEF WIN32}
    GetCursorPos(pt);
    SendMessage(Button1.Handle,
      WM_LBUTTONUP,
      MK_CONTROL,
      Longint(pt));
{$ENDIF}
  end;
end;

Код, предоставленный ниже, - это процедура VCL (Visual Component Library) для перемещения компонента (в этом случае, кнопки) в реальном времени при перетаскивании ее левой кнопкой мыши, одновременно нажимая клавишу Ctrl.

Следующий процесс происходит:

  1. Событийный обработчик Button1MouseDown вызывается, когда левая кнопка мыши нажата на кнопке.
  2. Он проверяет, включает ли состояние сдвига ssCtrl, что означает, что клавиша Ctrl нажата.
  3. Если клавиша Ctrl нажата, он освобождает захват окна (используя ReleaseCapture) и отправляет сообщение WM_ SYSCOMMAND кнопке с ее handle с кодом команды 61458 (который соответствует системной команде SC_MOVE).
  4. Это вызывает операционную систему начать перетаскивать кнопку.
  5. На не-Windows платформах (т.е., не WIN32) он получает текущую позицию курсора с помощью GetCursorPos и имитирует событие левой кнопки мыши вверх при этом положении, одновременно нажимая клавишу Ctrl.

Цель этого кода - позволить пользователю перемещать кнопку вокруг формы перетаскиванием ее левой кнопкой мыши, одновременно нажимая клавишу Ctrl.

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


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Drag and Drop ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-03-22 17:37:41/0.00307297706604/0