Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.23;
Скачать: CL | DM;

Вниз

Изменение цвета строки в StringGrid.   Найти похожие ветки 

 
Gizza ©   (2006-07-02 23:03) [0]

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

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

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


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

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


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


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

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


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


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

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


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


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

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


 
isasa ©   (2006-07-03 10:47) [5]

Да, хотя-бы и так.
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:57) [6]


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


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

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


 
isasa ©   (2006-07-03 11:07) [7]

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


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;




Страницы: 1 вся ветка

Текущий архив: 2006.07.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
6-1142433567
Toxin
2006-03-15 17:39
2006.07.23
Поиск в локальной сети


2-1152001604
muha89
2006-07-04 12:26
2006.07.23
Как запустить какую-нибуть процедуру


2-1151658907
alekslep
2006-06-30 13:15
2006.07.23
вложенные циклы.... непонятка...


11-1130734441
Reset
2005-10-31 07:54
2006.07.23
Убрать PopupMenu, если оно уже "вывалилось"?


2-1151955143
Footballer
2006-07-03 23:32
2006.07.23
Чё такое Handle?