powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DBGridEh и отрисовка "подсвеченных" строк
4 сообщений из 4, страница 1 из 1
DBGridEh и отрисовка "подсвеченных" строк
    #32372531
CKV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблемка:
в DBGridEh на событии OnGetCellParams хочу для некоторых столбцов в подсвеченной (highlighted) строке установить цвет шрифта = цвету фона. У RxDBGrid'а в этом событии было свойство Highlight, а у DBGridEh - такого свойства нет, есть State. Проверка значения gdSelected, gdFocused - не дают нужного эффекта - в подсвеченной строке у колонок шрифт всё равно белый.

Код: plaintext
1.
2.
3.
  if ( ClientDataSet1.FieldByName('GR').AsString <> '0') and
     ( gdSelected in State) then
    AFont.Color := clHighlight;


Как добиться присваивания нужного цвета для определенных колонок в подсвеченной строке?
...
Рейтинг: 0 / 0
DBGridEh и отрисовка "подсвеченных" строк
    #32374237
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Ну, раз TDBGridEh - это, как ни крути, DB - aware - компонент, то зачения цвета придется хранить в отображаемом наборе данных... Создайте для этого поле типа Integer, и с именем, например, "FColor". Наверное, правильно будет, ели оно не будет видимым.
2. Предположим, имя отображаемого поля, цвет которого мы хотим менять - "GR":
...
with dbGrid.DataSource.Dataset do // dbGrid - это Ваш DBGridEh
begin
DisableControls;
try
for I := 0 to dbGrid.SelectedRows.Count - 1 do
begin
Bookmark := dbGrid.SelectedRows.Items ;
Edit;
FieldByName('FColor').AsInteger := clRed; // Красный цет
post;
end;
finally
EnableControls;
end;
end;
dbGrid.Selection.UpdateState;
...

3. Добавим обработчик события OnGetCellParams для dbGridEh:
...
begin
inherited;
if FieldChanging then exit ; // От рекурсии - глобальная переменная
FieldChanging := true;
try
if Sender.FieldName = 'GR' then
if dtGrid.FieldByName('FCOLOR').AsInteger <> 0 then
Background := dtGrid.FieldByName('FCOLOR').AsInteger;
finally
FieldChanging := false;
end
end;


// Это все!
...
Рейтинг: 0 / 0
DBGridEh и отрисовка "подсвеченных" строк
    #32374254
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения: управляющие коды вкрались. Правильно так:
with dbGrid.DataSource.Dataset do // dbGrid - это Ваш DBGridEh
begin
DisableControls;
try
for I := 0 to dbGrid.SelectedRows.Count - 1 do
begin
Bookmark := dbGrid.SelectedRows.Items [ I ] ; //
Edit;
FieldByName('FColor').AsInteger := clRed; // Красный цет
post;
end;
finally
EnableControls;
end;
end;
dbGrid.Selection.UpdateState;
...

3. Добавим обработчик события OnGetCellParams для dbGridEh:
...
begin
inherited;
if FieldChanging then exit ; // От рекурсии - глобальная переменная
FieldChanging := true;
try
if Sender.FieldName = 'GR' then
if dtGrid.FieldByName('FCOLOR').AsInteger <> 0 then
Background := dtGrid.FieldByName('FCOLOR').AsInteger;
finally
FieldChanging := false;
end
end;


// Это все!
...
Рейтинг: 0 / 0
DBGridEh и отрисовка "подсвеченных" строк
    #32374361
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
странно а разве рисуют не на событие onDrawColumnCell ??


____
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DBGridEh и отрисовка "подсвеченных" строк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]