Components for Delphi and C++ Builder.

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

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




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: 23 июн 2013, 15:04 
Не в сети

Зарегистрирован: 23 июн 2013, 14:56
Сообщений: 4
Доброго времени суток всем!
У меня теряется отрисовка текущей строки в сетке при уходе фокуса с сетки
опция dgAlwaysShowSelection включена
может что-то забыл?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 23 июн 2013, 17:46 
Не в сети
Администратор

Зарегистрирован: 19 дек 2011, 17:40
Сообщений: 837
Добрый день.

Чтобы подсвечивалась текущая строка, необходимо также установить dghRowHighlight в OptionsEh.

_________________
Best regards
Admin


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 23 июн 2013, 18:50 
Не в сети

Зарегистрирован: 23 июн 2013, 14:56
Сообщений: 4
Виноват - не до конца сообщил исходные данные.
На каждую колонку в сетке поставил обработчик на OnGetCellParams, где всего одна строчка:
Params.SuppressActiveCellColor := True;
таким образом "избавился" от дефолтных цветов текущей строки....
Дело в том, что мне нужно отрисовывать текущую строку своими цветами, фон и цвет текста которой не одинаковы, а меняются в зависимости от условий. Однако без SuppressActiveCellColor как ни старался на выходе получал всегда у текущей строки белый цвет текста и синий цвет фона (сетка в фокусе) или серый цвет фона (сетка без фокуса).
Подозреваю, что одевал штаны через голову и есть способ более правильный.

Сейчас, включив dghRowHighlight, эффет получил тот же самый - при утере сеткой фокуса о текущей строке напоминает только индикатор.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 23 июн 2013, 19:26 
Не в сети
Администратор

Зарегистрирован: 19 дек 2011, 17:40
Сообщений: 837
Добрый день.

Если вам нужно менять цвет текста и фона, то вы все это можете сделать в том же событии DBGridEh1Columns0GetCellParams

Код:
procedure TForm1.DBGridEh1Columns0GetCellParams(Sender: TObject;
  EditMode: Boolean; Params: TColCellParamsEh);
begin
  if DBGridEh1.DataSource.DataSet.FieldByName('...').AsString = ... then
  begin
    Params.Background := ...
    Params.Font.Color := ...
  end;
end;

_________________
Best regards
Admin


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 23 июн 2013, 20:01 
Не в сети

Зарегистрирован: 23 июн 2013, 14:56
Сообщений: 4
Убрал SuppressActiveCellColor, написал следующее:

Код:
procedure TF2.DBG6Columns0GetCellParams(Sender: TObject; EditMode: Boolean;
  Params: TColCellParamsEh);
begin
//  Params.SuppressActiveCellColor := True;
  if gdFocused in Params.State then begin
    Params.Font.Color := clRed;
    Params.Background := clWhite;
  end;
end;


безрезультатно.....Условие выполняется, цвета присваиваются, но на выходе - цвета по-умолчанию
Что можно сделать?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 24 июн 2013, 12:38 
Не в сети

Зарегистрирован: 23 июн 2013, 14:56
Сообщений: 4
В итоге получилось так

Код:
procedure TF2.DBG6Columns0GetCellParams(Sender: TObject; EditMode: Boolean;
  Params: TColCellParamsEh);
begin
  Params.SuppressActiveCellColor := True;
  if gdSelected in Params.State then Params.Font.Color := clRed;
end;


и при потере фокуса сеткой - выделение не пропадает
тему можно закрывать


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

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


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

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


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

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