¿Ricardo Arjona? Pues sí que es un problema...
Lo que no entiendo muy bien es de dónde sacas el autor y el tema. ¿Son campos cada uno o tienes un campo donde ya están mezclados ambos?
De cualquier forma la ideas es que uses el evento OnDrawColumnCell del DBGrid. Aquí un ejemplo:
Código Delphi
[-]
procedure TForm1.DBGrid1DrawColumnCell(
Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
const
Separador = ' - ';
var
Autor, Tema: String;
AutorW, SeparadorW: Integer;
begin
with Sender as TDBGrid do
if (DataCol = 3) then
begin
Autor := Columns[1].Field.AsString;
Tema := Columns[2].Field.AsString;
AutorW := Canvas.TextWidth(Autor);
SeparadorW := Canvas.TextWidth(Separador);
Canvas.Font.Color := clRed;
Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, Autor);
Canvas.Font.Color := clBlack;
Canvas.TextOut(Rect.Left + 2 + AutorW, Rect.Top + 2, Separador);
Canvas.Font.Color := clBlue;
Canvas.TextOut(Rect.Left + 2 + AutorW + SeparadorW, Rect.Top + 2, Tema);
end
else
DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
Aquí estoy suponiendo que el autor y el tema están en las columnas 1 y 2 y que agregaste una columna 3 al dbgrid, que es donde pintas la combinación.
// Saludos