Перетаскивание компонента в run-time

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Перетаскивание компонента в run-time

Сообщение Light13 » 06.07.2012 08:28:01

Пишу наследника от TWinControl.

Необходимо его таскать во время работы программы.

Сейчас делаю так:
1. В перекрытом MouseDown
Код: Выделить всё
const
  SC_DRAGMOVE: Longint = $F012;
var
  MouseButtonsSwap: Boolean;
begin
  inherited;
  MouseButtonsSwap := GetSystemMetrics(SM_SWAPBUTTON) > 0;
  FMoving := (((Button = mbLeft) and not MouseButtonsSwap) or
    ((Button = mbRight) and MouseButtonsSwap)) and
    (Y <= Canvas.TextHeight(Caption) + 4 * BevelWidth);
  if FMoving then
  begin
    ReleaseCapture;
    SendMessage(Handle, WM_SYSCOMMAND, SC_DRAGMOVE, 0);
  end;
end;

Это работает под win.

1. Как узнать для Linux настройки мыши (если для левши).
2. Чем заменить ReleaseCapture.
3. Чем заменить SendMessage(Handle, WM_SYSCOMMAND, SC_DRAGMOVE, 0).
4. Может быть есть другой способ перетаскивания (изменять руками left, top не предлагать).

На днях буду раскуривать исходника Lazarus. Как что найду - отпишусь.
Аватара пользователя
Light13
постоялец
 
Сообщения: 127
Зарегистрирован: 17.07.2009 07:50:10
Откуда: Челябинск



Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 236

Рейтинг@Mail.ru
cron