Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-05-2008
yomismo24 yomismo24 is offline
Miembro
 
Registrado: oct 2007
Posts: 44
Poder: 0
yomismo24 Va por buen camino
Problema con imagenes de Treeview

Hola
mi problema es el siguiente: estoy usando un treeview que carga un imagen a lado de cada nodo desde un Imagelist. Hasta ahí todo bien, el problema es que cuando selecciono un nodo se me cambia la imagen por la primera del Imagelist. Cuando deja de estar seleccionado vuelve a su imagen original.
¿Como puedo evitar que se cambie la imagen al seleccionar?
Saludos y muchas gracias
Responder Con Cita
  #2  
Antiguo 12-05-2008
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
Es que también está la propiedad: SelectedIndex. Esta propiedad assigna una imagen distinta a los nodos seleccionados (y por defecto, su valor es 0). Así pues debes asignarle también un valor a esta propiedad, si no quieres que cambie, en tu caso tienes que poner el mismo valor que en ImageIndex.

Saludos.

Última edición por xEsk fecha: 12-05-2008 a las 14:31:04.
Responder Con Cita
  #3  
Antiguo 13-05-2008
yomismo24 yomismo24 is offline
Miembro
 
Registrado: oct 2007
Posts: 44
Poder: 0
yomismo24 Va por buen camino
Hola
gracias por la respuesta. Si, se que esa propiedad existe y que por defecto su valor es 0. Mi problema es como hacer para cambiar el valor SelectedIndex durante la ejecución para ponerle el valor del ItemIndex del nodo pulsado, ya que nada más pulsarlo se pone autmaticamente ItemIndex:=SelectedIndex y no al revés que es lo que a mi me interesa. No se si me explico.
A ver si se os ocurre algo.
Gracias y un saludo!
Responder Con Cita
  #4  
Antiguo 13-05-2008
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
A ver, si rellenas tú el TreeView con Items creados por ti, es tan fácil como asignarle el valor SelectedIndex el mismo que ImageIndex:

Ejemplo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  with TreeView1.Items.Add(nil, 'Prueba') do
    begin
      ImageIndex:=15;             // Valor 15, por ejemplo
      SelectedIndex:=ImageIndex;  // Copiamos el valor de ImageIndex
    end;
end;

Pongamos por ejemplo, que el TreeView no lo estas rellenando tú, sino que es otro "proceso" el que lo rellena por ti, y tu no tienes control sobre este (y no quieres realizar un bucle cambiando los valores), puedes capturar el evento "OnGetSelectedIndex" del TTreeView.

Ejemplo:
Código Delphi [-]
procedure TForm1.TreeView1GetSelectedIndex(Sender: TObject; Node: TTreeNode);
begin
  Node.SelectedIndex:=Node.ImageIndex;
end;

Saludos.
Responder Con Cita
  #5  
Antiguo 13-05-2008
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
Cita:
Empezado por yomismo24 Ver Mensaje
Hola
gracias por la respuesta. Si, se que esa propiedad existe y que por defecto su valor es 0. Mi problema es como hacer para cambiar el valor SelectedIndex durante la ejecución para ponerle el valor del ItemIndex del nodo pulsado, ya que nada más pulsarlo se pone autmaticamente ItemIndex:=SelectedIndex y no al revés que es lo que a mi me interesa. No se si me explico.
A ver si se os ocurre algo.
Gracias y un saludo!
Releyendo tu comentario, me da a pensar, que crees que siempre coge el valor de "ImageIndex", y no es así, cuando un nodo esta seleccionado el valor de la imagen es el del "SelectedIndex" y no el del "ImageIndex". En pocas palabras, que son totalmente independientes uno del otro, uno se usa para los nodos NO seleccionados (ImageIndex) y el otro se usa para los nodos SI seleccionados (SelectedIndex).

Saludos
Responder Con Cita
  #6  
Antiguo 14-05-2008
yomismo24 yomismo24 is offline
Miembro
 
Registrado: oct 2007
Posts: 44
Poder: 0
yomismo24 Va por buen camino
Hola de nuevo!
he leido tus comentarios (muchas gracias por contestar) y a ver si consigo explicar exactamente lo que me pasa. Yo tengo una funcion que va creando los nodos del arbol, y cuando los va creando va poniendo un valor en el ImageIndex de cada nodo 1,2,3 según el tipo de nodo que sea (no está relacionado con la profundidad del nodo, es decir un nodo de profundidad 2, puede tener ImageIndex=1,2,3 indistintamente). Relleno el arbol perfectamente y se muestra tal y como yo quiero.
El problema viene cuando selecciono un nodo, y se me pone la imagen que tiene configurada el SelectedIndex (0 en este caso). Yo lo que quiero es que al seleccionar un nodo, antes de que se me cambie la imagen por la indicada en SelectedIndex, poder cambiar el valor de SelectedIndex para que sea igual a ImageIndex. De esta forma no se cambiaría la imagen del nodo al seleccionarlo.
Espero haberlo explicado bien ahora
Pensé en usar el evento OnClick del arbol, pero ese evento no me proporciona el Nodo sobre el que pulso.
He probado el evento que me indicabas OnGetSelectedIndex pero este evento se produce constantemente, no solo cuando selecciono un nodo.
¿Se te ocurre alguna idea? porque yo ya estoy en blanco jejej
Gracias y un saludo!!
Responder Con Cita
  #7  
Antiguo 14-05-2008
yomismo24 yomismo24 is offline
Miembro
 
Registrado: oct 2007
Posts: 44
Poder: 0
yomismo24 Va por buen camino
Solucionado!!

Hola
pues eso, que ya lo he solucionado, la final era una tontería (es lo que me pasa por ser novato y no tener mucha idea jejej)
El evento que tenia que usar era el Onchage() que se produce al seleccionar un nodo diferente y además me proporciona el nodo que selecciono. De esta forma lo unico que tengo que hacer es poner en ese evento:

Arbol.Selected.SelectedIndex := Node.ImageIndex;

ya las imagenes se mantienen al cambiar de nodo seleccioando.
Lo dejo aquí escrito por si a alguien le sirve.
Un saludo y muchas gracias por haber ayudado.
Responder Con Cita
  #8  
Antiguo 15-05-2008
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
Me alegro que se te haya solucionado, pero esta solución ya te la propuse en uno de mis mensajes, hehe!! xDD

Saludos
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
Imagenes en un TREEVIEW mRoman OOP 14 01-06-2012 16:59:25
Imagenes mas grandes en un TreeView hmrvivas OOP 1 13-07-2007 06:02:43
Problema con TreeView CFPA86 Varios 1 09-03-2007 22:20:57
TreeView cambio de imagenes Manuel Varios 2 25-09-2006 15:53:18
Imagenes en el TreeView Gustavo Gowdak OOP 2 13-12-2004 02:25:10


La franja horaria es GMT +2. Ahora son las 07:33:12.


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