Ver Mensaje Individual
  #2  
Antiguo 31-03-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Coloca en un Form un ListBox.
Añade a la propiedad item las cdenas que comentas.
Modifica la propiedad Style a lbOwnerDrawVariable
En el evento OnDrawItem programa lo siguiente.

Código Delphi [-]
 procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
   Rect: TRect; State: TOwnerDrawState);
 var
   Str, Str1, Str2:String;
   p:Integer;
   w1, w2:Integer;
   ARect:TRect;
 begin
 
   // Cadena
   Str := ListBox1.Items[Index];
   //  Posicion del Guión
   p := Pos('-', Str);
 
   // Si el guión no está => nada...
   if (p = 0) then begin
     ListBox1.Canvas.TextRect(Rect, 0, 0, Str);
   end
   else begin
     // Calculamos las subcadenas
     Str1 := Copy(Str, 1, P - 1);
     Str2 := Copy(Str, P, Length(Str));
   end;
 
   // Calcular dimensiones de ambas
   w1 := ListBox1.Canvas.TextWidth(Str1);
   w2 := ListBox1.Canvas.TextWidth(Str2);
 
   // pintamos la primera parte
   ListBox1.Canvas.Font.Color := clRed;
   ListBox1.Canvas.TextRect(Rect, Rect.Left, Rect.Top, Str1);
 
   // Dibujamos el segundo
   ARect := Rect;
   ARect.Left := aRect.Left + w1;
   ListBox1.Canvas.Font.Color := clBlue;
   ListBox1.Canvas.TextRect(aRect, aRect.Left, aRect.Top, Str2);
 end;

NOTA: Se basa en que hay un guión para separar ambas partes; Si no lo hay, no pintará nada.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita