![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как при поиске в DBGRID выделять цветом найденные значения [D7]
Masha Streltsova © (2004-02-17 16:29:00)
Как при поиске слова в DBGRID выделять все найденные слова цветом. Если есть примерчик скиньте файл плиз ;) derliga@mail.ru
Masha Streltsova (2004-02-17 16:46:00) [1]
спасибо большое, сейчас попробуем!
Guest (2004-02-17 16:36:00) [2]
[1] Соловьев © (17.02.04 16:32)
+ лучше перекинуть первый DefaultDraw в конец процедуры (в новую ветвь else). Чтобы не рисовать 2 раза для указанных полей.
Соловьев (2004-02-17 16:32:00) [3]
procedure TFForm.DBGridTableDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
const dat="30.12.2999";
var
holdColor: TColor;
begin
IF TDBGrid(Sender).DataSource.DataSet.RecNo = RecNum
Then TDBGrid(Sender).Canvas.Brush.Color:=RGB($00,$cc,$ff);
IF gdSelected IN State
Then Begin
TDBGrid(Sender).Canvas.Brush.Color:= clHighLight;
TDBGrid(Sender).Canvas.Font.Color := clHighLightText;
End;
TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
holdColor := DBGridTable.Canvas.Brush.Color; {сохраняем оригинальный цвет}
//calcD
if Column.FieldName ="calcD" then {"раскрашиваем" ячейки только для поля
calcD}
if Column.Field.asString = "бессрочно" then
begin
DBGridTable.Canvas.Brush.Color := $00000ff00;//Green
DBGridTable.DefaultDrawColumnCell(Rect, DataCol, Column, State);
DBGridTable.Canvas.Brush.Color := holdColor;
end
else
if Column.Field.AsString <> "" then
if (StrToDate(Column.Field.AsString) < Date) then //срок истек
begin
DBGridTable.Canvas.Brush.Color := clRed;
DBGridTable.DefaultDrawColumnCell(Rect, DataCol, Column, State);
DBGridTable.Canvas.Brush.Color := holdColor;
end
end;
Вот когда-то писал