Components for Delphi and C++ Builder.

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

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




Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
 Заголовок сообщения: Выделение строк при HideDuplicate=True
СообщениеДобавлено: 05 мар 2020, 09:51 
Не в сети

Зарегистрирован: 06 мар 2012, 04:41
Сообщений: 128
Добрый день!

Как правильно выделить группку строк в пределах ключевого поля при работе с HideDuplicate?

в прилагаемом примере на базе проекта из демо добавлена часть кода и мышкой выделяется корректно

при использовании клавиатуры и правой клавиши мыши - не работает корректно перерисовка

и дополнительно обратите внимание на некорректное поведение при включенной группировке

http://forum.ehlib.com/ru/viewtopic.php?f=4&t=2473#p7891


Вложения:
demo.zip [3.87 KiB]
Скачиваний: 194
Image 22.png
Image 22.png [ 18.87 KiB | Просмотров: 3859 ]
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Выделение строк при HideDuplicate=True
СообщениеДобавлено: 12 мар 2020, 15:53 
Не в сети

Зарегистрирован: 06 мар 2012, 04:41
Сообщений: 128
Up


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Выделение строк при HideDuplicate=True
СообщениеДобавлено: 13 мар 2020, 13:43 
Не в сети

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

Попробуйте вызывать перерисовку грида при смене текущей записи.
Это можно сделать, например, в событии
DataSource.OnDataChange

Код:
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
  DBGridEh1.Invalidate;
end;

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Выделение строк при HideDuplicate=True
СообщениеДобавлено: 13 мар 2020, 16:34 
Не в сети

Зарегистрирован: 06 мар 2012, 04:41
Сообщений: 128
EhLibSupport писал(а):
Добрый день.

Попробуйте вызывать перерисовку грида при смене текущей записи.
Это можно сделать, например, в событии
DataSource.OnDataChange

Код:
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
  DBGridEh1.Invalidate;
end;


Спасибо. все работает


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Выделение строк при HideDuplicate=True
СообщениеДобавлено: 13 мар 2020, 17:18 
Не в сети

Зарегистрирован: 06 мар 2012, 04:41
Сообщений: 128
aBourg писал(а):
EhLibSupport писал(а):
Добрый день.

Попробуйте вызывать перерисовку грида при смене текущей записи.
Это можно сделать, например, в событии
DataSource.OnDataChange

Код:
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
  DBGridEh1.Invalidate;
end;


Спасибо. все работает



Извините, еще вопрос остался...
как корректно указать цвет выделения, чтобы не использовать
Код:
Params.Background := $00FFECD4;


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Выделение строк при HideDuplicate=True
СообщениеДобавлено: 27 мар 2020, 03:59 
Не в сети

Зарегистрирован: 06 мар 2012, 04:41
Сообщений: 128
aBourg писал(а):
aBourg писал(а):
EhLibSupport писал(а):
Добрый день.

Попробуйте вызывать перерисовку грида при смене текущей записи.
Это можно сделать, например, в событии
DataSource.OnDataChange

Код:
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
  DBGridEh1.Invalidate;
end;


Спасибо. все работает



Извините, еще вопрос остался...
как корректно указать цвет выделения, чтобы не использовать
Код:
Params.Background := $00FFECD4;


Up!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Выделение строк при HideDuplicate=True
СообщениеДобавлено: 30 мар 2020, 21:32 
Не в сети

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

Для вычисления цвета закраски области мультивыделения
можно использовать метод function TDBGridEhStyle.HighlightDataCellColor
Вот пример использования:

Код:
type
  TDBGridEhStyleCrack = class(TDBGridEhStyle);
procedure TForm1.DBGridEh1Columns0AdvDrawDataCell(Sender: TCustomDBGridEh; Cell,
  AreaCell: TGridCoord; Column: TColumnEh; const ARect: TRect;
  var Params: TColCellParamsEh; var Processed: Boolean);
var
  AColor: TColor;
  Style: TDBGridEhStyleCrack;
begin
  AColor := Params.Background;

  Style := TDBGridEhStyleCrack(Sender.Style);
  Style.HighlightDataCellColor(Sender, Params.Col, Params.Row,
      Params.Col - Sender.IndicatorOffset, Params.Row - Sender.TopDataOffset,
      Params.Text, Params.State, True, AColor, Params.Font);

  Params.Background := AColor;
end;

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Выделение строк при HideDuplicate=True
СообщениеДобавлено: 31 мар 2020, 05:50 
Не в сети

Зарегистрирован: 06 мар 2012, 04:41
Сообщений: 128
EhLibSupport писал(а):
Добрый день.

Для вычисления цвета закраски области мультивыделения
можно использовать метод function TDBGridEhStyle.HighlightDataCellColor
Вот пример использования:

Код:
type
  TDBGridEhStyleCrack = class(TDBGridEhStyle);
procedure TForm1.DBGridEh1Columns0AdvDrawDataCell(Sender: TCustomDBGridEh; Cell,
  AreaCell: TGridCoord; Column: TColumnEh; const ARect: TRect;
  var Params: TColCellParamsEh; var Processed: Boolean);
var
  AColor: TColor;
  Style: TDBGridEhStyleCrack;
begin
  AColor := Params.Background;

  Style := TDBGridEhStyleCrack(Sender.Style);
  Style.HighlightDataCellColor(Sender, Params.Col, Params.Row,
      Params.Col - Sender.IndicatorOffset, Params.Row - Sender.TopDataOffset,
      Params.Text, Params.State, True, AColor, Params.Font);

  Params.Background := AColor;
end;


То, что надо! спасибо


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Выделение строк при HideDuplicate=True
СообщениеДобавлено: 20 июн 2022, 07:26 
Не в сети

Зарегистрирован: 06 мар 2012, 04:41
Сообщений: 128
При переходе с 10.0 на версию 10.2.26 теперь для 2й и далее строк в пределах HideDuplicate имеем белую полосу как разделитель.
и второе - как вернуть цвет выделения как был в 10.0 ?
в блоке initialization DBGridEhDefaultStyle.LuminateSelection := False; не срабатывает


Вложения:
Image 008.png
Image 008.png [ 25.97 KiB | Просмотров: 2910 ]
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Выделение строк при HideDuplicate=True
СообщениеДобавлено: 03 июл 2022, 14:18 
Не в сети

Зарегистрирован: 06 мар 2012, 04:41
Сообщений: 128
Up


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Выделение строк при HideDuplicate=True
СообщениеДобавлено: 09 авг 2022, 01:08 
Не в сети

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

Напишите, пожалуйста, как воспроизвести ошибку в вашем Демо проекте.


Вложения:
sshot-253.png
sshot-253.png [ 24.37 KiB | Просмотров: 2754 ]

_________________
Best regards
EhLib support Team
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Выделение строк при HideDuplicate=True
СообщениеДобавлено: 10 авг 2022, 05:56 
Не в сети

Зарегистрирован: 06 мар 2012, 04:41
Сообщений: 128
EhLibSupport писал(а):
Добрый день.

Напишите, пожалуйста, как воспроизвести ошибку в вашем Демо проекте.


Пока воспроизвести не удается.. Сделаем


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Выделение строк при HideDuplicate=True
СообщениеДобавлено: 07 сен 2022, 13:43 
Не в сети

Зарегистрирован: 06 мар 2012, 04:41
Сообщений: 128
aBourg писал(а):
EhLibSupport писал(а):
Добрый день.

Напишите, пожалуйста, как воспроизвести ошибку в вашем Демо проекте.


Пока воспроизвести не удается.. Сделаем


Встаем, например, на 3ю строку в гриде и выделяем мышкой строк 10...
получаем белые разделительные полосы в ячейках, которые имеют установленное свойство HideDuplicate в True


Вложения:
Image006.png
Image006.png [ 16.5 KiB | Просмотров: 2094 ]
HideDupes2.rar [73.66 KiB]
Скачиваний: 122
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Выделение строк при HideDuplicate=True
СообщениеДобавлено: 17 сен 2022, 15:27 
Не в сети

Зарегистрирован: 06 мар 2012, 04:41
Сообщений: 128
Up


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Выделение строк при HideDuplicate=True
СообщениеДобавлено: 30 сен 2022, 01:59 
Не в сети

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

Исправили в сборке EhLib.VCL 10.2 Build 10.2.033.
Проверьте, пожалуйста.

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Выделение строк при HideDuplicate=True
СообщениеДобавлено: 30 сен 2022, 04:27 
Не в сети

Зарегистрирован: 06 мар 2012, 04:41
Сообщений: 128
Добрый день.

Выделение теперь работает корректно. Спасибо.

EhLibSupport писал(а):
Добрый день.

Исправили в сборке EhLib.VCL 10.2 Build 10.2.033.
Проверьте, пожалуйста.


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

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


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

Сейчас этот форум просматривают: Bing [Bot] и гости: 3


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

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