|
|
Регистрация | << Правила форума >> | 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; |