![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Что-то туплю с раскрашиванием строк TDBGrid(Eh) [D7]
TheEd © (2015-09-08 15:48:00)Уважаемые мастера! Началось с того, что часть строк в DBGridEh решил подкрасить бледным цветом (нередактируемые), потом к ним поля присоединились, получилось примерно так:
procedure TSomeForm.SomeGridGetCellParams(Sender: TObject;
Column: TColumnEh; AFont: TFont; var Background: TColor;
State: TGridDrawState);
begin
inherited;
if (not quSomeDatasetSomeIntegerField.AsBoolean) // 0 - false, 1 - true флаг редактируемости
or
(Column.FieldName = 'NotEditingField1')
then
begin
Background := Darker(clWindow, 10); // темнее
AFont.Color := Lighter(clWindowText, 30); // светлее
end;
end;
Всё работает, но как вычислить вставленную запись, чтобы её не подсвечивать?
TheEd (2015-09-09 00:38:00) [1]Нет, разобрался сам. Если кому пригодится:
В момент вставки, логическое полеquSomeDatasetSomeIntegerField, которое формируется как селект из хранимой процедуры - null!
Т.о. достаточно это проверить и текущая вставленная строка может быть подсвечена особо:
procedure TSomeForm.SomeGridGetCellParams(Sender: TObject;
Column: TColumnEh; AFont: TFont; var Background: TColor;
State: TGridDrawState);
begin
inherited;
if quSomeDatasetSomeIntegerField.IsNull then
Background := clYellow;
if (not quSomeDatasetSomeIntegerField.AsBoolean) // 0 - false, 1 - true флаг редактируемости
or
(Column.FieldName = 'NotEditingField1')
then
begin
Background := Darker(clWindow, 10); // темнее
AFont.Color := Lighter(clWindowText, 30); // светлее
end;
end;
Само собой, после любых телодвижений с данными надо CloseOpen сделать.
TheEd (2015-09-08 23:56:00) [2]По ходу не там вопрос задал. Счас в Базы перенесу...