Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Изменение цвета строки в StringGrid. [D7, XP]


Gizza ©   (2006-07-02 23:03:00) 

Доброго всем...

Ну, вообщем из названия ясно, но объясню на своем примере:
Есть форма, на ней таблица (и еще много всего, но это не важно). В одной из ячейке таблицызаписана дата (эээ... всмысле, есть целая есть целая колонка, которая называятся "Дата", и все ячейки в данной колонке содержат дату в формате String). Вот. Надо чтобы при запуске программы (ну это понятно Form1.onCreate)строки, в которых содержатся даты меньшей сегодняшней (впринципе, это тоже понятно)выделялись другим цветом (цвет выбирается на другой формес ColorBox). Вот, впринципе, и все.

Заранее всем спасибо.


isasa   (2006-07-03 11:07:00) [1]

Таак, понял, что поспешил.


procedure TCheckF.CheckGridDrawColumnCell(Sender: TObject; ACol, ARow: Longint; Rect: TRect; State: TGridDrawState);
begin
if <условие покраски> then begin
 if (gdFocused in State) then
     (Sender as TStringGrid).canvas.brush.color:=clActiveCaption //фокус
 else
     (Sender as TStringGrid).canvas.brush.color:=$00CCFFFF // не совпад. области - желтый
end;
... //Дальше рисуем, как обычно ...
end;

вот это все, для

type
 TDrawCellEvent = procedure (Sender: TObject; ACol, ARow: Longint; Rect: TRect; State: TGridDrawState) of object;
property OnDrawCell: TDrawCellEvent;


Gizza   (2006-07-03 10:57:00) [2]


> isasa ©   (03.07.06 10:47) [5]
> Да, хотя-бы и так.


2 вопроса:
Шо такое: Trim(Column.Field.Dataset.FieldbyName('clRegion').AsString);
И с чем это едят (справка молчит);

И будет ли это работь с Stringgrid, а не TDBGrid


isasa   (2006-07-03 10:47:00) [3]

Да, хотя-бы и так.
procedure TCheckF.CheckGridDrawColumnCell(Sender: TObject;
 const Rect: TRect; DataCol: Integer; Column: TColumn;
 State: TGridDrawState);
 var buf : string;
begin
 buf:=Trim(Column.Field.Dataset.FieldbyName('clRegion').AsString);
 if (length(buf)<>0) and
    (Trim(Column.Field.Dataset.FieldbyName('Region').AsString)<>buf) then begin
  if (gdFocused in State) then
      TDBGrid(Sender).canvas.brush.color:=clActiveCaption //фокус
  else
      TDBGrid(Sender).canvas.brush.color:=$00CCFFFF // не совпад. области - желтый
 end;
 TDBGrid(Sender).DefaultDrawColumnCell(rect,DataCol,Column,State);
end;


Gizza   (2006-07-03 10:30:00) [4]


> И что неясно? Как даты сравнить или как цвет поменять?

Как цвет поменять


Плохиш   (2006-07-03 00:34:00) [5]


> Вот. Надо чтобы при запуске программы (ну это понятно Form1.
> onCreate) строки, в которых содержатся даты меньшей сегодняшней
> (впринципе, это тоже понятно) выделялись другим цветом (цвет
> выбирается на другой форме с ColorBox).

Делается не "при запуске программы", а в событии OnDrawCell компонента TStringList.


Плохиш   (2006-07-03 00:34:00) [6]


> Плохиш ©   (03.07.06 00:34) [2]

TStringGrid конечно же :-)


EvS   (2006-07-03 00:19:00) [7]

И что неясно? Как даты сравнить или как цвет поменять?


Наверх

Титульная страница Поиск, карта сайта Написать письмо