Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-11-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Efectos en un TVirtualStringTree

Tengo un TVirtualStringTree y quisiera que una línea en concreto (en este caso al que lleva los totales) resaltara. De momento sólo he conseguido poner en negrita el texto pero me gsutaría cambiarle el fondo, por ejemplo en amarillo. Estoy usando este código en el evento OnPaintText:
Código:
void __fastcall TfDatos::DiariosPaintText(TBaseVirtualTree *Sender, const TCanvas *TargetCanvas, PVirtualNode Node, TColumnIndex Column, TVSTTextType TextType)
{
     TargetCanvas->Brush->Color = ((PTreeDatos)Sender->GetNodeData(Node))->Concepto.Pos("TOTAL") != 0 ? clYellow : clWhite;
     TargetCanvas->Font->Color  = clBlack;
     TargetCanvas->Font->Style  = ((PTreeDatos)Sender->GetNodeData(Node))->Concepto.Pos("TOTAL") != 0 ? TFontStyles() << fsBold : TFontStyles() >> fsBold;
}
pero sólo consigo esto.

¿Qué me falta oen qué evento he de ponerlo? He probado en todos los que sugiere la ayuda (OnBeforePaint, OnBeforeItemPaint, OnBeforeItemErase, OnAfterItemErase, OnBeforeCellPaint, OnPaintText y OnAfterCellPaint) pero o me da error o no hace el efecto que busco.
Responder Con Cita
  #2  
Antiguo 07-11-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
En el DrawText, ejemplo:
Código Delphi [-]
procedure TFcuentas.vstArbolDrawText(Sender: TBaseVirtualTree;
  TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
  const Text: WideString; const CellRect: TRect; var DefaultDraw: Boolean);
var
  NodeData : PTrecBase;
begin
  inherited;
  NodeData := (Sender as TBaseVirtualTree).GetNodeData(Node);
  if iMaxDigitos = NodeData.Nivel then
    if column=1 then
    begin
      TargetCanvas.Font.Color := clYellow;
      TargetCanvas.Brush.Color := clRed;
      targetcanvas.FillRect(cellrect);
    end;
end;
Responder Con Cita
  #3  
Antiguo 09-11-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
En Builder el VST no tiene el evento OnDrawText, por eso lo estaba haciendo en el OnPaintText.
Responder Con Cita
  #4  
Antiguo 09-11-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Angel.Matilla Ver Mensaje
En Builder el VST no tiene el evento OnDrawText, por eso lo estaba haciendo en el OnPaintText.
Pero si el ejemplo lo he sacado de Builder
Y lo he adaptado a delphi.
¿Y CustomDraw, o algo así?

Última edición por Casimiro Notevi fecha: 09-11-2020 a las 10:10:23.
Responder Con Cita
  #5  
Antiguo 09-11-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
No; tal vez tenga que ver con que uso BCB 6. En la ayuda del VST cita los siguientes eventos:
Cita:
OnBeforePaint
OnBeforeItemPaint
OnBeforeItemErase
OnAfterItemErase
OnBeforeCellPaint
string trees only, OnPaintText
OnAfterCellPaint
OnAfterItemPaint
OnAfterPaint
Creo que los he probado todos, pero estoy volviendo a probar.
Responder Con Cita
  #6  
Antiguo 09-11-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Es que lo que me llama la atención es que sí admita la letra en negrita pero no el cambio de fondo.
Responder Con Cita
  #7  
Antiguo 09-11-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues no sé, es que no tengo el Builder para probar.
Responder Con Cita
  #8  
Antiguo 10-11-2020
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Llevo desde ayer dándole vueltas y lo más que he conseguido ha sido esto:

con este código:
Código:
void __fastcall TfDatos::DesglosesBeforeItemPaint(TBaseVirtualTree *Sender,
      TCanvas *TargetCanvas, PVirtualNode Node, TRect &ItemRect,
      bool &CustomDraw)
{
     vsRect = ItemRect;     
}
//---------------------------------------------------------------------------

void __fastcall TfDatos::DesglosesPaintText(TBaseVirtualTree *Sender, const TCanvas *TargetCanvas, PVirtualNode Node, TColumnIndex Column, TVSTTextType TextType)
{
     TargetCanvas->Font->Color  = clBlack;
     TargetCanvas->Font->Style  = ((PTreeDesglose)Sender->GetNodeData(Node))->Concepto.Pos("TOTAL") != 0 ? TFontStyles() << fsBold : TFontStyles() >> fsBold;
     TargetCanvas->Brush->Color = ((PTreeDatos)Sender->GetNodeData(Node))->Concepto.Pos("TOTAL") != 0 ? clYellow : clWhite;
     TargetCanvas->FillRect(vsRect);
}
//---------------------------------------------------------------------------
Evidentemente vsRec está definida a nivel de todo el formulario con TRect vsREct. Está claro que tiene que poderse pero no encuentro la forma. Seguiremos probando
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Saber si un TVirtualStringTree tiene datos Angel.Matilla C++ Builder 1 29-07-2020 13:21:07
Personalizar TVirtualStringTree Angel.Matilla C++ Builder 10 23-11-2019 10:10:49
Cargar datos en TVirtualStringTree Angel.Matilla C++ Builder 2 28-09-2019 12:04:22
Efectos de Ventanas gerald Gráficos 10 30-10-2008 23:49:49
Efectos del Calor FGarcia La Taberna 13 14-05-2008 00:12:00


La franja horaria es GMT +2. Ahora son las 08:10:18.


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
Copyright 1996-2007 Club Delphi