Neftali [Germán.Estévez]
19-06-2012, 17:35:07
Buenas a todos.
Tengo un problemilla y estoy atascado. No se si es que me he obcecado, pero el caso es que algo que parece simple no me acaba de funcionar... :-(
La idea es poder pintar una línea de un TreeView (el texto de un nodo) en 2 colores diferentes.
Una imagen que refleja más o menos lo que necesito es esta:
http://img585.imageshack.us/img585/3122/imagen1202.png
Se que con componentes más avanzados que el estándard (tipo VirtualTreeView de Softgems) se podrá hacer, pero me resisto a utilizarlo para algo que parece tan simple.
Utilizo en evento OnDrawCustomcell del TTreeView, pero no consigo cambiar el color.
tv := TTreeview(Sender);
DefaultDraw := False;
// Calculo un par de zonas
Rect1 := Node.DisplayRect(False);
Rect2 := Node.DisplayRect(False);
Rect1.Right := Rect1.Right div 2;
Rect2.Left := Rect1.Right;
// pinto el texto
tv.Canvas.Font.Color := clBlack;
tv.Canvas.Font.Style := tv.Canvas.Font.Style + [fsBold];
tv.Canvas.TextRect(Rect1, Rect1.Left, Rect1.Top, Node.Text);
// Cambio color y estilo ¡¡¡ESTO NO FUNCIONA
tv.Canvas.Font.Style := tv.Canvas.Font.Style - [fsBold];
tv.Canvas.Font.Color := clRed;
tv.Canvas.TextRect(Rect2, Rect2.Left, Rect2.Top, 'Texto rojo');
El segundo texto que debería salir en rojo y sin negrita sigue saliendo igual que el otro.
¿Alguna sugerencia? Estoy espeso hoy y me debo estar dejando algo... :(
Tengo un problemilla y estoy atascado. No se si es que me he obcecado, pero el caso es que algo que parece simple no me acaba de funcionar... :-(
La idea es poder pintar una línea de un TreeView (el texto de un nodo) en 2 colores diferentes.
Una imagen que refleja más o menos lo que necesito es esta:
http://img585.imageshack.us/img585/3122/imagen1202.png
Se que con componentes más avanzados que el estándard (tipo VirtualTreeView de Softgems) se podrá hacer, pero me resisto a utilizarlo para algo que parece tan simple.
Utilizo en evento OnDrawCustomcell del TTreeView, pero no consigo cambiar el color.
tv := TTreeview(Sender);
DefaultDraw := False;
// Calculo un par de zonas
Rect1 := Node.DisplayRect(False);
Rect2 := Node.DisplayRect(False);
Rect1.Right := Rect1.Right div 2;
Rect2.Left := Rect1.Right;
// pinto el texto
tv.Canvas.Font.Color := clBlack;
tv.Canvas.Font.Style := tv.Canvas.Font.Style + [fsBold];
tv.Canvas.TextRect(Rect1, Rect1.Left, Rect1.Top, Node.Text);
// Cambio color y estilo ¡¡¡ESTO NO FUNCIONA
tv.Canvas.Font.Style := tv.Canvas.Font.Style - [fsBold];
tv.Canvas.Font.Color := clRed;
tv.Canvas.TextRect(Rect2, Rect2.Left, Rect2.Top, 'Texto rojo');
El segundo texto que debería salir en rojo y sin negrita sigue saliendo igual que el otro.
¿Alguna sugerencia? Estoy espeso hoy y me debo estar dejando algo... :(