Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отключ. скроллинга, когда курсор не на компоненте, DBGridEh отключение колесика 
V
    Опции темы
neweraser
Дата 14.3.2018, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



Всем привет!

Прошу помощи в такой проблеме. В DBGridEh скроллинг мышкой по умолчанию работает и это замечательно!
Но, когда увожу курсор с таблицы - он все равно работает на этой же таблице до тех пор, пока у нее не отпадет фокус. Функционал программы не страдает, но неудобства все же есть. Хотелось бы, чтобы при наведении на таблицу скроллинг работал, а если курсор не над таблицей - соответственно отключался.


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Snowy
Дата 14.3.2018, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



PM MAIL   Вверх
neweraser
Дата 16.3.2018, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



Не выходит.. не пойму, что делаю не так. 

Код

    ViewAngle := ViewAngle - 5;
    FormResize (nil);


На это ругается, оно и понятно, что это свойства RichEdit-а.

а если оставить так - не работает:
Код

procedure TEditEventForm.FormMouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
  if ControlAtPos(ScreenToClient(MousePos), True, true) <> EventsDBGridEh then
  begin
    Handled:= True; // тут, по идее, скролл должен работать только если курсор над гридом
  end;
end;



--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
neweraser
Дата 16.3.2018, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



Решил задачу так: может кому пригодится (если честно, помогли  smile , но я все же оставлю это тут):
Код

  public
    { Public declarations }
    procedure MouseWheelHandler(var Message: TMessage); override;

procedure TEditEventForm.MouseWheelHandler(var Message: TMessage);
begin
  if NeedScroll
    then inherited;
end;


Теперь по событиям OnMouseMove и Click на компонентах формы (везде, где мне нужно и как удобно) я включаю или отключаю NeedScroll.

Спасибо за помощь!


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Snowy
Дата 16.3.2018, 16:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Нужно искать контрол на его родителе. В том примере контрол лежит сразу на форме.
Если он лежит, например, на Panel3, то код будет выглядеть так:
Код
  if Panel3.ControlAtPos(Panel3.ScreenToClient(MousePos), True, true) <> EventsDBGridEh then
  begin
    Handled:= True;
  end;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1633 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.