Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2016, 15:38   #1
Vert0let
Новичок
Джуниор
 
Регистрация: 12.05.2016
Сообщений: 3
По умолчанию OnGetCellParams и OnDrawColumnCell

Прошу помочь с DBGridEh

Требуется изменить стиль выделения строки в гриде
свойство dgRowSelect = true
код:
Цитата:
procedure TCertificationForm.dbgrdh3GetCellPa rams(Sender: TObject;
Column: TColumnEh; AFont: TFont; var Background: TColor;
State: TGridDrawState);
begin
If Column.Field.dataset.FieldByName('C _Status').AsString='Член НП' then Background:=$00E1FFE1;
if gdSelected in State then AFont.Style:=[fsBold];
end;
выделяет жирным только первый столбец в гриде

а вот такой код выделяет цветом всю строку
Цитата:
procedure TCertificationForm.dbgrdh2DrawColum nCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
IF gdSelected IN State Then
Begin
TDBGridEh(Sender).Canvas.Brush.Colo r:= $CC5555;
TDBGridEh(Sender).Canvas.Font.Color := $FFFFFF;
TDBGridEh(Sender).Canvas.FillRect(r ect);
End;
TDBGridEh(Sender).DefaultDrawColumn Cell(Rect,DataCol,Column,State);
end;
почему в первом случае [gdSelected in State] только для ячейки первой колонки а во втором случае для всех колонок?

лично мне первый вариант нравится больше из-за того что остается родная рамка выделения со скруглёнными углами и градиентом (а во втором варианте рисуется прямоугольник поверх ячейки просто). но этот первый вариант корректно не отрабатывает почему-то

или как внести изменения в стиль отрисовки грида? (DbGridEhStyle)
Vert0let вне форума Ответить с цитированием
Старый 12.05.2016, 15:59   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
gdSelected - The cell is currently selected
Выбранная ячейка только одна, а не все в строке и не обязательно только первая колонка
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.05.2016, 09:33   #3
Vert0let
Новичок
Джуниор
 
Регистрация: 12.05.2016
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Выбранная ячейка только одна, а не все в строке и не обязательно только первая колонка
dgRowSelect - включено.
т.е. выделяется вся строка в гриде
и во втором примере отрабатывает нормально

в первом примере не работает для всей строки. и отрабатывает только для ПЕРВОЙ колонки, даже если кликать на другие колонки
Vert0let вне форума Ответить с цитированием
Старый 13.05.2016, 09:50   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Типа такого? Для убедительности ещё и fsItalic засунул. Д7, EhLib 2.5
Код:
procedure TForm1.DBGridEh1GetCellParams(Sender: TObject; Column: TColumnEh;
  AFont: TFont; var Background: TColor; State: TGridDrawState);
begin
  if ClientDataSet1i.AsInteger=1 then Background:=$00E1FFE1;
  if gdSelected in State then AFont.Style:=[fsBold,fsItalic];
end;
Изображения
Тип файла: jpg Безымянный.JPG (18.7 Кб, 135 просмотров)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.05.2016, 10:42   #5
Vert0let
Новичок
Джуниор
 
Регистрация: 12.05.2016
Сообщений: 3
По умолчанию

да. типа такого
rad studio XE7 + ehlib8
ни в какую не хочет
Цитата:
procedure TCertificationForm.dbgrdh6GetCellPa rams(Sender: TObject;
Column: TColumnEh; AFont: TFont; var Background: TColor;
State: TGridDrawState);
begin
if CertQr.FieldByName('CertExpDate').A sDateTime >= IncDay(Now,60) then Background:=$00E1FFE1
else If CertQr.FieldByName('CertExpDate').A sDateTime > Now then Background:=$E1FFFF
else Background:=$00F2F3FF;
if gdSelected in State then Afont.Style:=[fsBold];
end;
Изображения
Тип файла: jpg 2016-05-13_103554.jpg (39.4 Кб, 154 просмотров)
Vert0let вне форума Ответить с цитированием
Старый 13.05.2016, 10:56   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Чего-то поменяли значит. Обойдешься, строка и так выделена, зачем еще жирным выделять? Указал бы сразу в 1-ом посте версию EhLib я бы и не лез с подсказками, нет у меня ehlib8
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 13.05.2016 в 11:00.
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OnGetCellParams Goodwind32 Компоненты Delphi 5 17.06.2012 09:11
Событие OnDrawColumnCell для динамически созданного грида Pavka Помощь студентам 7 19.11.2009 14:15