Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 28 мар 2024, 10:31

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
СообщениеДобавлено: 31 июл 2020, 07:15 
Не в сети

Зарегистрирован: 03 мар 2017, 07:12
Сообщений: 91
Здравствуйте.
Есть задача в форме с DBGridEh прощелкать чекбоксы, что нужно поставить, что нужно снять.
чекбоксы это IndicatorOptions = [gioShowRowselCheckboxesEh]
см. картинку
Вопросы

1. Можно ли полностью убрать выделение ячейки/строки активной в данным момент? (см. выделение ячейки с буквой Д ).
Т.к. в данном контексте понятие "активной/текущей строки" не нужно вообще.

2. В данным момент первый щелчок по чекбоксу НЕ выделенной строки выделяет ее и только второй меняет значение чекбокса.
и при этом, в текущей строке, для того чтобы поменять состояние чекбокса нужен 1 щелчок.
Это неудобно и при быстрой работе спутывает и нервирует пользователей.
Можно ли сделать так чтобы щелчок по чекбоксу с первого раза менял значение?


Вложения:
FormIcon.png
FormIcon.png [ 13.37 KiB | Просмотров: 2097 ]
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 01 авг 2020, 00:16 
Не в сети

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

Цитата:
1. Можно ли полностью убрать выделение ячейки/строки активной в данным момент? (см. выделение ячейки с буквой Д ).
Т.к. в данном контексте понятие "активной/текущей строки" не нужно вообще.

К сожалению возможности полного отключения выделение текущей ячейки нет.
Частично отключает подсветку можно через свойство OptionsEh.dghHighlightFocus = False.

Код:
2. В данным момент первый щелчок по чекбоксу НЕ выделенной строки выделяет ее и только второй меняет значение чекбокса.
и при этом, в текущей строке, для того чтобы поменять состояние чекбокса нужен 1 щелчок.

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


Вложения:
2020-08-01-SelectRecordByCheckbox.zip [2.49 KiB]
Скачиваний: 100

_________________
Best regards
EhLib support Team
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 03 авг 2020, 04:35 
Не в сети

Зарегистрирован: 03 мар 2017, 07:12
Сообщений: 91
EhLibSupport писал(а):
Попробуйте донастроить проект так, чтобы ошибка стала воспроизводится.

Донастраивать не пришлось, просто перенес проект в Lazarus 2.0.8 (вручную, не импортом)
И сразу работает так, как я описал


Вложения:
2020-08-03-SelectRecordByCheckbox_Lazarus.7z [60.56 KiB]
Скачиваний: 89
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 04 авг 2020, 02:52 
Не в сети

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

В Lazarus 2.0.10 ошибка не воспроизводиться.
Ссылку на видео прилагаю.
https://yadi.sk/i/5r1xr-55qnxoLA

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 04 авг 2020, 05:51 
Не в сети

Зарегистрирован: 03 мар 2017, 07:12
Сообщений: 91
У вас там не только Lazarus 2.0.10
но и Ehlib 9.5, а у меня 9.3 видимо в нем ошибка


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 05 авг 2020, 07:18 
Не в сети

Зарегистрирован: 03 мар 2017, 07:12
Сообщений: 91
Что можно сделать чтобы исправить ошибку?
Я заметил что вообще все события отрабатываются следующим шагом, после выделения.
И Одиночный клик и Двойной клик , и ПКМ
Иногда это не важно, но в общем мешает.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 02 сен 2020, 05:45 
Не в сети

Зарегистрирован: 03 мар 2017, 07:12
Сообщений: 91
Уважаемые разработчики, давайте, пожалуйста, решим ситуацию.

В вашем компоненте ошибка.
При первом клике на строке в ячейку ли, в чекбокс ли.
происходит смена курсора в датасете, и в гриде,
НО далее блокируются все действия завязанные на onMouseDown, и само это событие и установка чек бокса.

Сравнил DBGridEh.pas в библиотеке версии 9,3 на Lazarus, и в 6,3 на Delphi7
в 6,3 такой проблемы нет, и там изменение чекбокса прописано в обработчике MouseUp, а в 9,3 на MouseDown , и в какой-то момент у вас там обработка прерывается, при первом клике на строке.



Прикладываю проект Lazarus+EhLib9.3 и exe можете посмотреть как отличается поведение onMouseDown от остальных.
( тут exe-шник https://yadi.sk/d/t7jLPxqEsTGYRw )

Давайте решим проблему.
Вы или пересборку 9,3 выпустите, или подскажите, что исправить можно самому.


Вложения:
Lazarus_lpr_2.zip [66.54 KiB]
Скачиваний: 87


Последний раз редактировалось jsa 02 сен 2020, 08:30, всего редактировалось 1 раз.
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 02 сен 2020, 06:29 
Не в сети

Зарегистрирован: 03 мар 2017, 07:12
Сообщений: 91
Пока сделал так.

Код:
...
var
  Form1: TForm1;
  fl_MDown:boolean;
...
procedure TForm1.DBGridEh1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
       fl_MDown:=true;
end;

procedure TForm1.DBGridEh1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var cr:TGridCoord;
begin
     cr:=DBGridEh1.MouseCoord(X, Y);
     if (not fl_MDown) and (cr.X=0) then DBGridEh1.SelectedRows.CurrentRowSelected := not DBGridEh1.SelectedRows.CurrentRowSelected ;
     fl_MDown:=false;
end; 


Но это нелепые костыли.
Ошибку надо исправлять в библиотеке.


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

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


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

Сейчас этот форум просматривают: dnau и гости: 5


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

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