Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.08.2010, 13:33
gebs gebs вне форума
Прохожий
 
Регистрация: 03.08.2010
Сообщения: 48
Репутация: 10
По умолчанию Закрасить ячейку исходя из значения другой ячейки

Здравствуйте! Есть 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  
Старый 15.08.2010, 22:49
Vocabulary Vocabulary вне форума
Новичок
 
Регистрация: 17.09.2009
Сообщения: 85
Репутация: 9
По умолчанию

У DBGridEh есть событие OnGetCellParams. В котором можно закрашивать ячейки, менять свойства шрифта и пр.
Ответить с цитированием
  #3  
Старый 15.08.2010, 23:20
Аватар для Anchorte
Anchorte Anchorte вне форума
Прохожий
 
Регистрация: 18.09.2009
Адрес: Курск
Сообщения: 49
Репутация: 10
По умолчанию

Я делал вот так
Код:
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;
только тут закрашивается строка в таблице
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:26.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter