NodeCheck en Treeview

21/01/2005 - 09:28 por Eduardo Castellano | Informe spam
Estoy haciendo un treeview en el que al marcar checkbox de un nodo evaluo
si realmente puede marcarse, y en caso de que sea así marco todos los
nodos padres del actual como checked.
El metodo NodeCheck basicamente es este:

LPARAMETERS NODE
LOCAL l_padre
IF !NODE.checked
* se ha desmarcado
ELSE
NODE.checked=THISFORM.Evaluo_si_se_puede_marcar(NODE.key)
* mercar a todos los padres si efectivamente se ha marcado el elemento
IF NODE.checked
l_padre=NODE.PARENT
DO WHILE !ISNULL(l_padre)
l_padre.checked=.T.
l_padre=l_padre.PARENT
ENDDO
ENDIF
ENDIF

Cuando se intenta marcar un nodo y Evaluo_si_se_puede_marcar=.t. se marca
el nodo y sus padres.

El problema es que cuando un nodo se marca y Evaluo_si_se_puede_marcar
devuelve .f. efectivamente la parte del método que debe marcar los padres
no se ejecuta, el depurador me dice node.checked=.f. pero al final el nodo
queda marcado.
Le he dado mil vueltas y no le veo la pega



PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway

Preguntas similare

Leer las respuestas

#1 Fernando D. Bozzo
24/01/2005 - 18:29 | Informe spam
Hola Eduardo:

En el código que pusiste sólo veo la parte que marca los nodos, no veo la
que los desmarca.

Saludos,

Fernando D. Bozzo
VFP 6

Recomendación: Lea estos grupos de noticias con un cliente de newsgroup:
Este artículo lo guiará para configurarlos con Outlook Express:
http://www.panoramabox.com/GoPub.aspx?IdObj$47




"Eduardo Castellano" escribió en el mensaje
news:#FhFBN5$
Estoy haciendo un treeview en el que al marcar checkbox de un nodo evaluo
si realmente puede marcarse, y en caso de que sea así marco todos los
nodos padres del actual como checked.
El metodo NodeCheck basicamente es este:

LPARAMETERS NODE
LOCAL l_padre
IF !NODE.checked
* se ha desmarcado
ELSE
NODE.checked=THISFORM.Evaluo_si_se_puede_marcar(NODE.key)
* mercar a todos los padres si efectivamente se ha marcado el elemento
IF NODE.checked
l_padre=NODE.PARENT
DO WHILE !ISNULL(l_padre)
l_padre.checked=.T.
l_padre=l_padre.PARENT
ENDDO
ENDIF
ENDIF

Cuando se intenta marcar un nodo y Evaluo_si_se_puede_marcar=.t. se marca
el nodo y sus padres.

El problema es que cuando un nodo se marca y Evaluo_si_se_puede_marcar
devuelve .f. efectivamente la parte del método que debe marcar los padres
no se ejecuta, el depurador me dice node.checked=.f. pero al final el nodo
queda marcado.
Le he dado mil vueltas y no le veo la pega



PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
#2 Eduardo Castellano
25/01/2005 - 08:32 | Informe spam
Hola Fernando:
Gracias por tu interes.
Lo que me interesa controlar es si un nodo se puede marcar o no, pero si
un nodo está marcado siempre puede desmarcarse.
Lo que hago cuando se desmarca es revisar si han quedado desmarcados todo
los hermanos, y en ese caso desmarcar el padre. No lo he incluido pq eso
si que funciona, pero por si es de interes...

LPARAMETERS NODE
LOCAL l_padre, l_desmarcar_parent, l_hermano
IF !NODE.checked
* se ha desmarcado
THISFORM.Desmarca_hijos(NODE) && este metodo desmarca los hijos, y los
hijos de sus hijos.
* si todos los hermanos estan desmarcados debe desmarcarde el padre
l_padre=NODE.PARENT
DO WHILE !ISNULL(l_padre)
l_desmarcar_parent=.T.
IF l_padre.children>0 && Esta claro que tiene hijos. Pero,
amigo, nunca se sabe...
l_hermano=l_padre.CHILD
FOR i=1 TO l_padre.children
IF l_hermano.checked
l_desmarcar_parent=.F.
EXIT
ENDIF
l_hermano=l_hermano.NEXT
ENDFOR
ENDIF
IF l_desmarcar_parent
l_padre.checked=.F.
l_padre=l_padre.PARENT
ELSE
EXIT
ENDIF
ENDDO
ELSE
NODE.checked=THISFORM.Evaluo_si_se_puede_marcar(NODE.key)
* mercar a todos los padres si efectivamente se ha marcado el elemento
IF NODE.checked
l_padre=NODE.PARENT
DO WHILE !ISNULL(l_padre)
l_padre.checked=.T.
l_padre=l_padre.PARENT
ENDDO
ENDIF
ENDIF

Lo que me llama la atención es que cuado se marca un nodo y en mi metodo
decido que no lo permito, el nodo queda marcado aunque dentro del metodo
le diga NODE.checked=.f. pero lo mas estraño es que el IF NODE.checked no
se ejecuta.

Saludos y gracias


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
#3 Fernando D. Bozzo
25/01/2005 - 17:04 | Informe spam
Hola Eduardo:

Exactamente en qué momento se ejecuta éste método NodeCheck (o que acción lo
ejecuta) y qué parámetro recibe como nodo?


"Eduardo Castellano" escribió en el mensaje
news:#FhFBN5$
Estoy haciendo un treeview en el que al marcar checkbox de un nodo evaluo
si realmente puede marcarse, y en caso de que sea así marco todos los
nodos padres del actual como checked.
El metodo NodeCheck basicamente es este:

LPARAMETERS NODE
LOCAL l_padre
IF !NODE.checked
* se ha desmarcado
ELSE
NODE.checked=THISFORM.Evaluo_si_se_puede_marcar(NODE.key)
* mercar a todos los padres si efectivamente se ha marcado el elemento
IF NODE.checked
l_padre=NODE.PARENT
DO WHILE !ISNULL(l_padre)
l_padre.checked=.T.
l_padre=l_padre.PARENT
ENDDO
ENDIF
ENDIF

Cuando se intenta marcar un nodo y Evaluo_si_se_puede_marcar=.t. se marca
el nodo y sus padres.

El problema es que cuando un nodo se marca y Evaluo_si_se_puede_marcar
devuelve .f. efectivamente la parte del método que debe marcar los padres
no se ejecuta, el depurador me dice node.checked=.f. pero al final el nodo
queda marcado.
Le he dado mil vueltas y no le veo la pega



PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
#4 Eduardo Castellano
25/01/2005 - 18:27 | Informe spam
Hola Fernando:

Es un método del propio control treeview. No lo he creado yo.
Ocurre cuando se hace click en el checkbox de un nodo. (El checkBox solo
se muestra cuando la propiedad CheckBoxes del control es .t.)

El parametro que recibe es el objeto nodo en cuyo checkbox se hace click.

Para programar esto estoy utilizando el artículo 'El Control Activex
Treeview - Lo esencial' de Jim Nelson

Utilizo VFP6.0 y el control es Microsoft Treeview Control 6.0 (SP6)

Saludos

-
PortalFox :: Nada corre como un zorr
http://www.portalfox.co

PortalFox - NNTP Forum Gatewa
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida