Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-08-2008
Avatar de lag_0
lag_0 lag_0 is offline
Miembro
 
Registrado: jul 2006
Posts: 131
Poder: 18
lag_0 Va por buen camino
TTreeView y Custom Draw de texto

Buenas,
A ver si alguien me pude ayudar.. Tengo un TTreeView y quiero que "dibuje" un texto diferente al que tiene la propiedad Text de cada node, el problema es que no encuentro como hacerlo...

he intentado esto:
Código Delphi [-]
procedure TSmartsExplorer.BTreeCustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
      Node.Text := 'Test';
end;

Pero eso me cambia el texto del nodo...
Alguien me da una idea?
Muchas gracias.
Responder Con Cita
  #2  
Antiguo 11-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola, es ir jugando con la propiedad canvas. Fijate que defaultdraw lo asigno aqui, pero solo asignandolo una vez por algun otro lado ya tendrias bastante

Código Delphi [-]
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var
        R : TRect;
begin
        DefaultDraw := false;
        R := Node.DisplayRect(false);
        Sender.Canvas.Brush.Color := clBtnFace;
        Sender.Canvas.FillRect(R);
        Sender.Canvas.TextOut(R.Left,R.Top,'item text = ' + Node.Text);
end;

Última edición por coso fecha: 11-08-2008 a las 13:57:31.
Responder Con Cita
  #3  
Antiguo 11-08-2008
Avatar de lag_0
lag_0 lag_0 is offline
Miembro
 
Registrado: jul 2006
Posts: 131
Poder: 18
lag_0 Va por buen camino
Buenas,
Ante todo; Gracias por contestar.

Como dices, efectivamente, ese código funciona; El problema, es que si hago un DefaultDraw := False; Me cargo las imágenes de los nodos, las lineas de "arbol" etc. etc....

Solo quiero cambiar el texto.. y no sé me ocurre como hacerlo...
Gracias una vez más.

Edit:
He conseguido hacerlo... basandome en la ayuda de coso, pero, consigo un efecto muy "feo", yo pinto un nuevo texto sobre el nodo y cuando lo seleccionas queda solo hasta donde ocupe el texto original, y no sé puede hacer "click" en la parte que no existe sin draw...
Se os ocurre algo:
Código Delphi [-]
procedure TSmartsExplorer.BTreeAdvancedCustomDrawItem(
  Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState;
  Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean);
var
  R:TRect;
  TempS:string;
begin
  TempS := 'Texto para pintar';
  R := Node.DisplayRect(True);
  Sender.Canvas.FillRect(Node.DisplayRect(true));
  Sender.Canvas.TextOut(R.Left,R.Top,TempS);
end;

Última edición por lag_0 fecha: 11-08-2008 a las 13:14:15.
Responder Con Cita
  #4  
Antiguo 11-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola, eso es por el Node.DisplayRect, si lo pones a true, solo te da un rectangulo con el tamaño del texto anterior.
Responder Con Cita
  #5  
Antiguo 11-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Umm no, que relei. Echa una busqueda por el foro, porque este tema esta bastante tratado, y seguro que encuentras como arreglarlo. Saludos.
Responder Con Cita
  #6  
Antiguo 12-08-2008
Avatar de lag_0
lag_0 lag_0 is offline
Miembro
 
Registrado: jul 2006
Posts: 131
Poder: 18
lag_0 Va por buen camino
Pues yo seré tonto o ciego pero ni en google encuentro nada @___@

¿Me hechas una mano por favor? No consigo hacer que "redibuje" el tamaño del item claro que es casi perfecto así...

Pero si fuera perfecto mejor aún
Responder Con Cita
  #7  
Antiguo 12-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Te dejo un post que parece algo relacionado : este . Tambien, usando la ayuda de delphi sobre THitTest, se encuentra esto

Cita:
Unit

Comctrls

type
THitTest = (htAbove, htBelow, htNowhere, htOnItem, htOnButton, htOnIcon, htOnIndent, htOnLabel, htOnRight, htOnStateIcon, htToLeft, htToRight);
THitTests = set of THitTest;

Description

THitTests is a set of THitTest values. THitTest can have any of the following values:

Value Means the point is

htAbove Above the client area.
htBelow Below the client area.
htNowhere Inside the control, but not on an item.
htOnItem On an item, its text, or its bitmap.
htOnButton On a button.
htOnIcon On an icon.
htOnIndent On the indented area of an item.
htOnLabel On a label.
htOnRight On the right side of an item.
htOnStateIcon On a state icon or bitmap associated with an item.
htToLeft To the left of the client area.
htToRight To the right of the client area.
creo q con una combinacion del GetHitTestInfoAt (en el mensaje anterior sale como usarlo) usando como hittest, por ejemplo, el htOnRight o el htOnIndent, deberias solucionarlo. De igual manera he buscado rapidamente. Creo que he visto bastantes variaciones del treeview, aqui en el foro, con el codigo fuente, asi que es posible que este solucionado venga un saludo y suerte

Última edición por coso fecha: 12-08-2008 a las 12:15:06.
Responder Con Cita
  #8  
Antiguo 12-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
A ver, por eso, si esta tarde tengo tiempo y saco un ejempo saludos otra vez
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
tamaño de pagina Custom con compositereport JESUSNET Internet 0 24-03-2008 22:09:42
Problema en la vista previa en quickreport y con el pappersize custom amezeta32 Impresión 1 17-08-2007 20:53:46
BitBtl vs Draw Deiv Gráficos 10 29-01-2007 15:10:15
Impresion Custom tbolzan Impresión 2 15-09-2004 16:38:18
custom size en QuickReport marianaf Impresión 1 15-12-2003 15:36:18


La franja horaria es GMT +2. Ahora son las 21:43:11.


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