Components for Delphi and C++ Builder.

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

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: 09 май 2018, 11:43 
Не в сети

Зарегистрирован: 06 мар 2018, 16:06
Сообщений: 9
Как можно выделить жирной линией группы друг от друга, при HideDuplicates=true. Желательно, ещё бы и выбрать свой цвет линии раздела групп.

Есть ли возможность, как-то понять, что это последняя строчка группы? я использую ADOQuery.


Вложения:
2.jpg
2.jpg [ 147.26 KiB | Просмотров: 1704 ]
Grupa.7z [8.12 KiB]
Скачиваний: 101
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 26 май 2018, 18:31 
Не в сети

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

Можно использовать событие TColumnEh.OnAdvDrawDataCell

Код:
procedure TForm1.DBGridEh1Columns2AdvDrawDataCell(Sender: TCustomDBGridEh; Cell,
  AreaCell: TGridCoord; Column: TColumnEh; const ARect: TRect;
  var Params: TColCellParamsEh; var Processed: Boolean);
var
  s: String;
  checkColumn: TColumnEh;
begin
  DBGridEh1.DefaultDrawColumnDataCell(Cell, AreaCell, Column, ARect, Params);
  checkColumn := DBGridEh1.FieldColumns['Continent'];
  s := checkColumn.DisplayText;
  if not DBGridEh1.CheckColumnDuplicateValues(checkColumn, Params.Row, s, False) then
  begin
    DBGridEh1.Canvas.Pen.Color := clTeal;
    DBGridEh1.Canvas.Polyline([Point(ARect.Left, ARect.Bottom),
                     Point(ARect.Right+1, ARect.Bottom)]);
    DBGridEh1.Canvas.Polyline([Point(ARect.Left, ARect.Bottom-1),
                     Point(ARect.Right+1, ARect.Bottom-1)]);
  end;
  Processed := True;
end;


Событие надо присвоить всем колонкам грида


Вложения:
sshot-24.png
sshot-24.png [ 25.64 KiB | Просмотров: 1629 ]

_________________
Best regards
EhLib support Team
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 28 май 2018, 06:55 
Не в сети

Зарегистрирован: 06 мар 2018, 16:06
Сообщений: 9
Спасибо, получилось.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 30 дек 2019, 05:44 
Не в сети

Зарегистрирован: 30 дек 2019, 05:31
Сообщений: 3
Почему-то выходит ошибка:
[Error] Project1.pas(177): Symbol 'Point' is specific to a platform
[Error] Project1.pas(177):')' expected but ',' found
[Error] Project1.pas(177):Incompatible types: 'TPoint' and 'Integer'

Пробовал в других проектах. В одном, всё нормально работает, а в двух других выводит эту ошибку. Что это может быть?


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

Зарегистрирован: 06 мар 2012, 04:41
Сообщений: 128
Подчеркивание последней строки группы не работает корректно в 9.5.8, если включена группировка

в проект DBGridEh.HideDuplicates из Demos добавлен обработчик всем колонкам TColumnEh.OnAdvDrawDataCell
Код:
var
  s: String;
  checkColumn: TColumnEh;
  [b]n: Integer[/b];
begin
  [b]n := 0;[/b]
  DBGridEh1.DefaultDrawColumnDataCell(Cell, AreaCell, Column, ARect, Params);
  checkColumn := DBGridEh1.FieldColumns['EmpNo'];
  s := checkColumn.DisplayText;
  if not DBGridEh1.CheckColumnDuplicateValues(checkColumn, Params.Row, s, False[b], n[/b]) then
  begin
    DBGridEh1.Canvas.Pen.Color := clTeal;
   DBGridEh1.Canvas.Polyline([Point(ARect.Left, ARect.Bottom), Point(ARect.Right+1, ARect.Bottom)]);
  end;
  Processed := True;



Теперь требуется дополнительный параметр для CheckColumnDuplicateValues
как выглядит на экране


Вложения:
Image 1.png
Image 1.png [ 19.61 KiB | Просмотров: 1196 ]
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 05 мар 2020, 16:58 
Не в сети

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

В предыдущем коде обработчика присутствует ошибка
Вместо Params.Row надо передавать Params.Row - DBGridEh1.TopDataOffset

Вот исправленный вариант:

Код:
procedure TForm1.DBGridEh1Columns0AdvDrawDataCell(Sender: TCustomDBGridEh; Cell,
  AreaCell: TGridCoord; Column: TColumnEh; const ARect: TRect;
  var Params: TColCellParamsEh; var Processed: Boolean);
var
  s: String;
  checkColumn: TColumnEh;
  n: Integer;
begin
  n := 0;
  DBGridEh1.DefaultDrawColumnDataCell(Cell, AreaCell, Column, ARect, Params);
  checkColumn := DBGridEh1.FieldColumns['Name'];
  s := checkColumn.DisplayText;
  if not DBGridEh1.CheckColumnDuplicateValues(checkColumn, Params.Row - DBGridEh1.TopDataOffset, s, False, n) then
  begin
    DBGridEh1.Canvas.Pen.Color := clTeal;
    DBGridEh1.Canvas.Polyline([Point(ARect.Left, ARect.Bottom), Point(ARect.Right+1, ARect.Bottom)]);
  end;
  Processed := True;
end;

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 12 мар 2020, 15:53 
Не в сети

Зарегистрирован: 06 мар 2012, 04:41
Сообщений: 128
Спасибо.
Теперь работает, как ожидалось


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

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


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

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


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

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