![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте! Есть DBGrid на событиия OnDrowColumnCell вот такой код:
Код:
if column.fieldname = 'status' then if (column.field.asstring = 'да') then begin with DBGridEh_znp.Canvas do begin Brush.Color:=cllime; Font.Color:=cllime; FillRect(Rect); TextOut(Rect.Left+2, Rect.Top+2, Column.Field.Text); end; end; if column.fieldname = 'status' then if (column.field.asstring = 'нет') then begin with DBGridEh_znp.Canvas do begin Brush.Color:=clred; Font.Color:=clred; FillRect(Rect); TextOut(Rect.Left+2, Rect.Top+2, Column.Field.Text); end; end; Хочется сделать так чтобы при изменении значения соседней ячейки (отличное от '') менялся цвет колонки status на cllime. Есть соображение, но оно не работает: Код:
if (DbGridEh_znp.Columns[22].FieldName <> '') then DbGridEh_znp.Columns[23].FieldName:= 'да'; Последний раз редактировалось gebs, 15.08.2010 в 13:50. |
|
#2
|
|||
|
|||
|
У DBGridEh есть событие OnGetCellParams. В котором можно закрашивать ячейки, менять свойства шрифта и пр.
|
|
#3
|
||||
|
||||
|
Я делал вот так
Код:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (Table2.FieldByName('.').Value = 'X') then
begin
with DBGrid1.Canvas do
begin
Brush.Color := clYellow;
Font.Color := clBlack;
FillRect(Rect);
if (Column.Alignment = taRightJustify) then
TextOut(Rect.Right - 2 - TextWidth(Column.Field.Text), Rect.Top + 2,
Column.Field.Text)
else
TextOut(Rect.Left + 10, Rect.Top + 2, Column.Field.Text);
end;
end;
end; |