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 Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-05-2018
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
Un TTreeView que no funciona como quiero


Tengo ese formulario. Es evidente que a la izquiera hay un TTreeView; la parte de la derecha es un TPanel que contiene la información. Tengo este código en el evento OnGetSelectedIndex del TTreeView:
Código PHP:
PageControl2->ActivePageIndex = -1;
Panel1->Visible = !Node->HasChildren;
if (!
Node->HasChildren)
{
     
PageControl2->ActivePageIndex 0;
     
PageControl2Change(NULL);

Al menos a mi me parece evidente que si el nodo seleccionado tiene descendientes el panel de la derecha no debería mostrarse, pero como podéis ver en la imagen no sólo se muestra sino que además la información no tiene nada que ver con el nodo seleccionado. ¿Alguna sugerencia?
Responder Con Cita
  #2  
Antiguo 10-05-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Código Delphi [-]
Panel1->Visible = !Node->HasChildren;
Cuando el nodo no tenga hijos, que se muestre. ¿No será al revés? ¿ese es el comportamiento que deseas?
Responder Con Cita
  #3  
Antiguo 10-05-2018
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Creo que lo has hecho al revés. Es decir:
Código:
  Panel1->Visible = !Node->HasChildren; // Panel1 es Visible si NO (Node tiene hijos).
Debería ser:
Código:
  Panel1->Visible = Node->HasChildren; // Panel1 es Visible si Node tiene hijos.
Al menos eso creo, por lo que dices.

[edit]
Empate, Casimiro.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #4  
Antiguo 10-05-2018
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, es correcto. El panel con la información debe mostrarse cuando el nodo seleccionado no tenga hijos. En la imagen que he puesto el orden de los nodos es:
Cita:
Partido Judicial > Comarca > Municipio
Es evidente que la información detallada es a nivel de municipio; en el resto de los casos no hay nada que mostrar porque en todo caso sería un resumen de lo que cuelga de ese nodo.

Parte del problema lo he resuelto en parte. Estaba creando el árbol con AddObjects /AddChlidObjects en vez con Add / AddChild y estaba cometiendo el error de introducir en los niveles superiores un valor en el objeto. Al ejecutar el query para sacar la información arrastraba un código que es el que produce esos resultados absurdos. Sin embargo a pesar de haber solucionado este problema cuando cargo el arbol se me muestra siempre el panel hasta que empiezo a recorrerlo.
Responder Con Cita
  #5  
Antiguo 10-05-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

El evento no es el adecuado, usa el mismo código en el evento OnChange del TTreeView.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 10-05-2018
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
Gracias por las respuestas. Al menos de momento he desistido de usar un TTreeView y he pasado a usar un TListView; es menos elegante, pero hasta que no vea porqué no funciona como yo quiero lo dejo aparcado.
Cita:
Empezado por ecfisa Ver Mensaje
El evento no es el adecuado, usa el mismo código en el evento OnChange del TTreeView.
Pero para poder usar ese código en el OnChange, antes tendré que saber que ítem tengo seleccionado y eso si no me equivoco se "descubre" en donde ahora lo tengo puestp. Corregidme si estoy errado.
Responder Con Cita
  #7  
Antiguo 10-05-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
Empezado por Angel.Matilla Ver Mensaje
...
Pero para poder usar ese código en el OnChange, antes tendré que saber que ítem tengo seleccionado y eso si no me equivoco se "descubre" en donde ahora lo tengo puestp. Corregidme si estoy errado.
Pero... ¿ lo has probado y no funciona o solo conjeturas que no lo hace ?

Código PHP:
void __fastcall TTu_Form::Tu_TreeViewChange(TObject *SenderTTreeNode *Node)
{
  
// Aquí Node es el actualmente seleccionado
  
Panel1->Visible = !Node->HasChildren;

Muestra del comportamiento con tus datos:


Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 11-05-2018
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
Cita:
Empezado por ecfisa Ver Mensaje
Pero... ¿ lo has probado y no funciona o solo conjeturas que no lo hace ?
No, no son conjeturas; está probado.
Responder Con Cita
  #9  
Antiguo 11-05-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Bueno, como queda demostrado en el ejemplo y video anterior, no hay que saber con antelación que ítem está seleccionado; el parámetro Node del evento OnChange apunta al nodo actualmente seleccionado.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 11-05-2018
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
Cita:
Empezado por ecfisa Ver Mensaje
Bueno, como queda demostrado en el ejemplo y video anterior, no hay que saber con antelación que ítem está seleccionado; el parámetro Node del evento OnChange apunta al nodo actualmente seleccionado.
Pues tenéis toda la razón; no me lo había planteado así. Volveré a probar.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Cómo asignar imagenes a un TTreeView David Varios 4 11-06-2007 23:17:09
Como ocultar nodos en un TTreeView? AFilth Varios 2 12-08-2005 09:27:38
Como controlar contenido de TTreeView FunBit OOP 2 22-07-2005 11:21:53
Como selecionar un nodo de un TTreeView VRO OOP 2 18-05-2005 17:45:24
Como puedo imprimir un TtreeView con imagenes? jmrojass Varios 0 03-06-2003 23:03:38


La franja horaria es GMT +2. Ahora son las 19:10:37.


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