Hola Agustín.
Fijate si podes sacar algo de provecho de este código de prueba:
Código Delphi
[-]
...
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
a,b,c: string;
p : Integer;
cv : TCanvas;
fs : TFontStyles;
begin
p := AnsiPos(FSearched, Column.Field.AsString);
if (p <> 0) and (Column.Field is TStringField) then
begin
a := Copy(Column.Field.AsString, 1, p - 1);
b := Copy(Column.Field.AsString, p, Length(FSearched));
c := Copy(Column.Field.AsString, p + Length(FSearched), MaxInt);
cv := TDBGrid(Sender).Canvas;
cv.FillRect(Rect);
p := Rect.Left + 2;
fs := cv.Font.Style;
cv.Font.Style := [];
cv.TextOut(p, Rect.Top + 2, a);
Inc(p, cv.TextWidth(a));
cv.Font.Style := [fsBold];
cv.TextOut(p, Rect.Top + 2, b);
Inc(p, cv.TextWidth(b));
cv.Font.Style := [];
cv.TextOut(p , Rect.Top + 2, c);
end;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
FSearched := Edit1.Text;
DBGrid1.Invalidate;
end;
...
Esta para ser usado sobre
TStringFields (y tendrías que filtrar las columnas deseadas en el condicional)
Saludos