Текущий архив: 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.46 MB
Время: 0.014 c