Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Delphi > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 15.02.2020, 14:08   #1
Heneken
Новичок
Джуниор
 
Регистрация: 18.09.2011
Сообщений: 2
По умолчанию Зажатая левая клавиша мыши

Всем привет. Вопрос может быть совсем нубский, но пока не могу сообразить в чем подвох.Пытаюсь реализовать изменение стиля кнопки на клик через
Код:
    procedure WMMouseDown(var Message); message WM_LBUTTONDOWN;
    procedure WMMouseUp(var Message); message WM_LBUTTONUP;
   procedure WMMoseFirst(var Message: TWMMouseActivate); message WM_MOUSEFIRST;
Код:
procedure TCustomEsButton.WMMouseDown(var Message);
begin
  inherited;
  FCurrentStyle := FStyleClick;
  Invalidate;
end;
Код:
procedure TCustomEsButton.WMMoseFirst(var Message: TWMMouseActivate);
begin
  inherited;
  FCurrentStyle := FStyleEnterMouse;
  Invalidate;
end;
Код:
  
procedure TCustomEsButton.WMMouseUp(var Message);
begin
  inherited;
  FCurrentStyle := FStyleEnterMouse;
  Invalidate;
end;
Проблема в том, что после WMMouseDown, сразу же ловится
Код:
procedure WMMoseFirst(var Message: TWMMouseActivate); message WM_MOUSEFIRST;
И я не могу вдуплить, какого лешего мне винда посылает сообщение о первичном событии крысы, если никто с компонента мышь не сводил и я нигде WM_MOUSELEAVE не посылал. Получается что винда сама это делает при WM_LBUTTONDOWN. Соответственно я вижу на экране мерцание стиля на Down и его возврат в состояние описанное в WMMoseFirst имхо тут - же получаю WM_MOUSEFIRST.

Как от подобного избавиться? Подскажите, может WM_MOUSEFIRST следует заменить на что-то иное или с ControlStyle поиграть?
Я знаю как разрулить эту ситуацию, но не хочу рисовать дополнительные поля, может есть какое то штатное решение?

P.S -
Код:
 Множество ControlStyle -  [csCaptureMouse,csClickEvents,csSetCaption,csParentBackground,csGestures]

Последний раз редактировалось Heneken; 15.02.2020 в 15:48.
Heneken вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Правая клавиша мыши в FormClick apromix Общие вопросы Delphi 2 22.08.2010 19:06
Клавиша мыши -=Virus=- Общие вопросы Delphi 5 24.11.2009 01:21
И снова левая и правая кнопка мыши (Delphi 7) alxd Помощь студентам 6 25.09.2009 14:10
OnClick - правая или левая кнопка мыши Vadim_S Общие вопросы Delphi 8 16.09.2009 18:15
какая функция определяет - была-ли нажата левая кнопка мыши, положение мышки на экране Wicing Общие вопросы Delphi 5 11.12.2007 11:17


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS