Ver Mensaje Individual
  #2  
Antiguo 23-01-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿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 = ' - '; // Separador entre autor y tema

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);

      // Escribes el autor en rojo
      Canvas.Font.Color := clRed;
      Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, Autor);

      // Escribes el separador entre autor y tema en negro
      Canvas.Font.Color := clBlack;
      Canvas.TextOut(Rect.Left + 2 + AutorW, Rect.Top + 2, Separador);

      // Escribes el tema en azul
      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
Responder Con Cita