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
Str := ListBox1.Items[Index];
p := Pos('-', Str);
if (p = 0) then begin
ListBox1.Canvas.TextRect(Rect, 0, 0, Str);
end
else begin
Str1 := Copy(Str, 1, P - 1);
Str2 := Copy(Str, P, Length(Str));
end;
w1 := ListBox1.Canvas.TextWidth(Str1);
w2 := ListBox1.Canvas.TextWidth(Str2);
ListBox1.Canvas.Font.Color := clRed;
ListBox1.Canvas.TextRect(Rect, Rect.Left, Rect.Top, Str1);
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.