Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Убирать бордюр формы при перемещении

Delphi , Программа и Интерфейс , Формы

Убирать бордюр формы при перемещении

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

procedure TForm1.PanelTopMouseDown(Sender: TObject;
   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 const
   SC_DRAGMOVE = $F012;
 begin
   if (Button = mbLeft) then
   begin
     ReleaseCapture;
     (Self as TControl).Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);
   end;
 end;

Перевод на русский язык:

Процедура Delphi, обрабатывающая событие MouseDown панели управления (TPanel) с именем PanelTop. Цель этой процедуры - позволить пользователю перетаскивать панель, кликнув на нее и перемещая мышь.

В деталях код выполняет следующие действия:

  1. Проверяет, был ли нажат левый кнопка мыши (т.е., Button = mbLeft).
  2. Если была нажата левая кнопка мыши, освобождает захват событий мыши с помощью метода ReleaseCapture.
  3. Затем выполняет системный команд с помощью метода Perform, имитируя операцию перетаскивания.

Системный команд, используемый в этом случае, - это WM_ SYSCOMMAND, который является Windows-сообщением, указывающим на выполнение системного уровня команды. Первый параметр SC_DRAGMOVE - константа, которая определяет тип системной команды, выполняющейся в этом случае - перетаскивание.

Имитация операции перетаскивания позволяет панели отвечать на движения мыши, как если бы она была перетаскивана пользователем.

Альтернативное решение с использованием встроенной поддержкой Delphi для перетаскивания контролов:

procedure TForm1.PanelTopMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  (Sender as TControl).StartDrag;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  (Sender as TControl).EndDrag;
end;

В этом альтернативном решении мы используем метод StartDrag, чтобы инициировать операцию перетаскивания при клике на панели. Мы также должны перехватить событие FormMouseUp, чтобы завершить операцию перетаскивания, когда кнопка мыши будет отпущена.

Эта APPROACH проще и более эффективна, чем имитация системной команды с помощью WM_ SYSCOMMAND.

При перемещении формы в Delphi нужно убирать бордюр формы для обеспечения корректного перетаскивания.


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


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




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



:: Главная :: Формы ::


реклама



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

Время компиляции файла: 2024-05-19 17:53:24
2024-05-20 04:17:20/0.0068421363830566/2