![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Изменение цвета строки в 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]И что неясно? Как даты сравнить или как цвет поменять?