Panel1MouseMove некоректная работа

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

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

Ответить
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Panel1MouseMove некоректная работа

Сообщение Attid »

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);

при ssLeft возрощает событие только если зажал кнопку прям над этой панелью, над другими панелями не будет возрощать событие.

пока проверил только под вендой
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Да вроде все правильно. По умолчанию контролы захватывают мышь, т.е. после нажатия левой кнопки и до ее отпускания все мышиные сообщения идут только тому контролу, над которым ее нажали. Управляется кодом вида:

Код: Выделить всё

with Panel1 do
  ControlStyle := ControlStyle + [csCaptureMouse];
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

так правая кнопка работает на всех .
или у них не гласное разделенеи
всякие контролы и альты вроде нормально работают.
а вот левая выделяется.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Да, мышь захватывается только по левой кнопке. Так уж испокон веков было сделано в Дельфи и соответственно переехало в Лазарь.
Рациональное зерно в этом есть: например, можно таскать ползунок скроллбара, даже если курсор вышел за границы этого скроллбара.
Ответить