Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Mostrar texto en 2 colores, en celda dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=29488)

Renees 23-01-2006 20:17:51

Mostrar texto en 2 colores, en celda dbgrid
 
BUENAS TARDES A TODOS, buena mi consulta es la siguiente: Tengo un Dbgrid, en la cual muetro nombre del cantante - nombre del tema
ej: ricardo arjona - el problema
Aclaro esto esta en una sola celda.
Y yo quisiera que me aparesca asi :
ej: ricardo arjona - el problema

bueno desde ya muchas gracias.

roman 23-01-2006 23:24:06

¿Ricardo Arjona? Pues sí que es un problema... :rolleyes:

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

Renees 24-01-2006 15:59:51

Gracias roman.
 
La ayuda fue enorme, Gracias Roman.


La franja horaria es GMT +2. Ahora son las 23:14:01.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi