Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 22 окт 2019, 06:48

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Скроллинг колесом мыши
СообщениеДобавлено: 18 сен 2019, 09:41 
Не в сети

Зарегистрирован: 07 окт 2012, 17:29
Сообщений: 28
Всем доброго времени суток. Никто не в курсе, возможно ли организовать перемещение по записям, используя колесо мыши, средствами EhLib?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Скроллинг колесом мыши
СообщениеДобавлено: 18 сен 2019, 10:23 
Не в сети

Зарегистрирован: 14 окт 2014, 11:19
Сообщений: 41
В DBGridEh? Так скроллится за милую душу же.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Скроллинг колесом мыши
СообщениеДобавлено: 18 сен 2019, 12:16 
Не в сети

Зарегистрирован: 07 окт 2012, 17:29
Сообщений: 28
aush писал(а):
В DBGridEh? Так скроллится за милую душу же.

У меня почему-то нет... Только что склепал самый примитивный пример - без единой строчки кода кроме открытия и закрытия датасета. Скроллинг не работает. Могу прислать пример. Можно уточнить вопрос: в каких случаях скроллинг может отрубаться?

P. S. После серии экспериментов я понял, в чем проблема. EhGrid мышью скроллирует набор данных, если он не помещается на одну видимую страницу, при этом оставляет текущую запись неизменной. Мне же надо, чтобы мышка эмулировала клавиши "вверх" и "вниз", перемещаясь на следующую или предыдущую запись. Проблема в том, что в гриде нет события, возникающего при вращении колеса мышки, поэтому я не знаю, как съэмулировать такое поведение, потому как фокусированный на форме грид ловит и перекрывает обработку колеса мыши на форме. Есть возможность хотя бы отключить обработку колеса мыши в гриде, чтобы отрабатывали события формы?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Скроллинг колесом мыши
СообщениеДобавлено: 18 сен 2019, 21:04 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 977
Добрый день.

Если грид подключен к MemTableEh, то колесо мыши прокручивает содержимое грида вместо перемещения по записям.
Есть возможность отключить эту возможность для всех гридов проекта.
Для этого надо установить глобальное свойтво
Код:
  DBGridEhCenter.TryUseViewScroll := False;

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Скроллинг колесом мыши
СообщениеДобавлено: 19 сен 2019, 03:37 
Не в сети

Зарегистрирован: 07 окт 2012, 17:29
Сообщений: 28
Спасибо, это именно то, что нужно. Вопрос закрыт


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Скроллинг колесом мыши
СообщениеДобавлено: 03 окт 2019, 14:02 
Не в сети

Зарегистрирован: 17 окт 2016, 13:19
Сообщений: 30
Откуда: Россия, Москва
День добрый.

Delphi XE5.
Пробовал на EhLib.VCL 9.4 Build 9.4.016 и на EhLib.VCL 9.4 Build 9.4.017 включать
Код:
DBGridEhCenter.TryUseViewScroll := False;


Для теста сделал проект: форма, TDBGridEh, TMemTableEh, TDataSource.
При старте создаю поля в TMemTableEh, наполняю данными.

В событии DrawColumnCell стоит код для разрисовки колонок:
Код:
procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
   var FN : string;
begin
  with (Sender as TDBGridEh) do
  begin
   FN  :=  Column.FieldName;
   if (FN = 'P2') or (FN = 'P3') then
   begin
      Canvas.Brush.Color  :=  clBtnFace;
      Canvas.Font.Color   :=  clBlack;
   end;
  end;

  TDBGridEh(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;


При попытки скролировать колесом мыши вываливается ошибка:
[img]error1.jpg[/img]

Далее клацая по окну с ошибкой вываливаются другие цифры на ней.
Закоментарив код в DrawColumnCell , ошибок при прокрутке колесом мыши нет.
Поставив точку останова выяснил - ошибка происходит на строке TDBGridEh(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);

Вопрос: что не так?
Проект прилагаю


Вложения:
TDBGridEhTest.rar [110.49 KiB]
Скачиваний: 10
error1.jpg
error1.jpg [ 75.49 KiB | Просмотров: 240 ]
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Скроллинг колесом мыши
СообщениеДобавлено: 03 окт 2019, 14:35 
Не в сети

Зарегистрирован: 14 окт 2014, 11:19
Сообщений: 41
А такую разрисовку не проще в OnGetCellParams засунуть?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Скроллинг колесом мыши
СообщениеДобавлено: 03 окт 2019, 14:56 
Не в сети

Зарегистрирован: 17 окт 2016, 13:19
Сообщений: 30
Откуда: Россия, Москва
aush писал(а):
А такую разрисовку не проще в OnGetCellParams засунуть?

Приветствую.
Ну тут вопрос не про разрисовку, а то что при установке глобального свойства DBGridEhCenter.TryUseViewScroll := False;
в обработчике DrawColumnCell вываливается в ошибку на строке TDBGridEh(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
Если не трогать это глобальное свойство, то все нормально, но тогда не будет премещения по записям через колесо мыши )))
Таки хочется, чтобы все работало )))


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Скроллинг колесом мыши
СообщениеДобавлено: 18 окт 2019, 21:51 
Не в сети

Зарегистрирован: 17 окт 2016, 13:19
Сообщений: 30
Откуда: Россия, Москва
Товарищи разработчики, удалось воспроизвести ошибку?
С уважением, Александр.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Скроллинг колесом мыши
СообщениеДобавлено: 19 окт 2019, 01:40 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 977
Добрый день.

Да, удалось воспроизвести и исправить.
Проверьте, пожалуйста, в сборке EhLib 9.4 Build 9.4.018.

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC


Кто сейчас на форуме

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB