Добрый день.
К сожалению, в библиотеки нет специальных функций или классов для отрисовки мультиформатного текста.
Один из вариантов, это использовать RichText, но его надо будет где-то хранить. В БД или динамически создавать.
Другой вариант - рисовать куски текста самому в событии TColumnEh.OnAdvDrawDataCell.
Вот пример обработчика события для подмены цвета, первого слова в содержимом ячейки.
Код:
procedure TForm1.DBGridEh1Columns2AdvDrawDataCell(Sender: TCustomDBGridEh; Cell,
AreaCell: TGridCoord; Column: TColumnEh; const ARect: TRect;
var Params: TColCellParamsEh; var Processed: Boolean);
var
s1, s2: String;
TextRect: TRect;
begin
//Draw background
//Just use default draw method with Text = ''
Params.Text := '';
Sender.DefaultDrawColumnDataCell(Cell, AreaCell, Column, ARect, Params);
//Draw foreground
Sender.Canvas.Brush.Style := bsClear;
if (Column.DisplayText = 'South America') then
begin
Sender.Canvas.Font.Color := $000042CA;
s1 := 'South ';
end
else
begin
Sender.Canvas.Font.Color := $00FF8000;
s1 := 'North ';
end;
TextRect := ARect;
TextRect.Top := TextRect.Top + 2;
TextRect.Left := TextRect.Left + 2;
Sender.Canvas.TextRect(TextRect, s1);
TextRect.Left := TextRect.Left + Sender.Canvas.TextWidth(s1);
s2 := 'America';
Sender.Canvas.Font.Color := clWindowText;
Sender.Canvas.TextRect(TextRect, s2);
Processed := True;
end;