Page 1 of 1

Tree: Error en oTree:GetSelected():GetParent():cPrompt

Posted: Tue Aug 25, 2009 10:41 am
by MarioG
Estimados;
Buscando post anteriores encuentro que el tema se trato en este post: oTree:GetSelected():GetParent():cPrompt
No obstante no tiene respuesta al interrogante. Alguien lo usa y lo soluciono?, como?
En mi proyecto genero un Tree desde una BD. Luego bajo ciertas condiciones deseo buscar mediante ::cPrompt. a través de bLdblclick; y es allí donde se produce el error
Alguna idea?

desde ya muchas gracias

Re: Tree: Error en oTree:GetSelected():GetParent():cPrompt

Posted: Tue Aug 25, 2009 10:55 am
by Daniel Garcia-Gil
Hola Mario...

Seria buena idea que mostraras minimo el error y aparte si tienes un ejemplo autocontenido que podamos reproducir el error, con gusto podremos encontrar mas rapida una respuesta

Re: Tree: Error en oTree:GetSelected():GetParent():cPrompt

Posted: Tue Sep 01, 2009 3:11 pm
by MarioG
Daniel; desde ya muchas gracias por responder
He tomado testtre2.prg de \samples y agruegué el siguiente código:

oTree:blDblClick:= {|| if( !Empty( oTree:GetSelText() ), ;
if( !Empty( oTree:GetSelected():GetParent():cPrompt ), ;
wqout( { oTree:GetSelected():GetParent():cPrompt }), "vacio"), "" ) }

Al ejecutar el sample y hacer doblclic sobre el primer Item ya se manifiesta el error.
Lo que, si bien es coherente, ya que no existe un nivel por encima; lo que pretendo es averiguar si estoy en el 1º o 2º nivel para obrar en consecuencia
digamos que:
+ Hello Word
- xBase & OOPS
+ Otro Item
- SubItem

Si esta expandido y puslo sobre Hello Word, da error
Sobre el 2º Item (Otro Item), si no está expandido, lo abre, pero si esta abierto y pulso sobre él (Otro Item), tmb ocurre el error

Si esta no es la forma cual sería?

Saludos

Re: Tree: Error en oTree:GetSelected():GetParent():cPrompt

Posted: Mon Sep 14, 2009 1:11 pm
by MarioG
Daniel;
alguna respeusta para esta consulta?

desde ya muchas gracias

Re: Tree: Error en oTree:GetSelected():GetParent():cPrompt

Posted: Tue Sep 29, 2009 12:14 pm
by MarioG
Daniel;
Sin querer entrar en una polémica y reconociendo que no es tu obligación dar una respeusta; no obstante pregunto:
El silencio es respuesta?
Puse el sample que pediste, pero nunca hubo respuesta.
Este tema, por ahora no tiene solución?

Saludos

Re: Tree: Error en oTree:GetSelected():GetParent():cPrompt

Posted: Thu Oct 01, 2009 10:08 pm
by VPOZO
Mario en estos momenots me veo enfrentado al mismo problema que tu pero luego de hacer varias pruebas, opte por hacer algo diferente, veras en mi caso las ramas del tree tienen en _ el mismo cprompt, lo que me complicaba mas el tema al ir a la tabla a buscar con esto "cprompt". Me di cuenta que cada rama del tree es un objeto y tiene un numero de manejador que es unico asi que lo que hice fue guardar estos numeros en arreglos para despues buscar en otro vector relacionado el valor de la clave que necesito para hacer el seek en la tabla. Todo esta en ocupar dos arreglos con la misma cantidad de elementos. este es un ejemplo:

ahItem = guarda los manejadores
aBound = guardo la clave a buscar en la talba

//-------------------------------------------
#Include "Fivewin.ch"

MEMVAR ahItem, aBound

FUNCTION Main()
LOCAL oDlgTree, oTree
PRIVATE ahItem:={}, aBound:={}

DEFINE DIALOG oDlgTree FROM 2,3 TO 40, 40 TITLE "PRUEBA DEL TREE" RESOURCE "DLG_MANTREE"

//--> Defino el Tree desde un Recurso
oTree:= TTreeview():ReDefine( 800, oDlgTree, 0, RGB( 255, 255, 255) )

//--> en este bloque muestro inflormacion de la rama del tree al hacer click
//--> y lo que le paso como parametro es el manejador del objeto item
oTree:bChanged := { |oTree,oItem| Verarbol( oTree:GetSelected():hItem ) }

ACTIVATE DIALOG oDlgTree CENTERED ArmTree(oTree)

RETURN Nil


---------------------------------*
* HACE EL LLENADO DEL TREE CON UNA
* TABLA DONDE ESTAN TODAS LAS REGIONDE DEL PAIS
* !CHILE!
*---------------------------------*
FUNCTION ArmTree( oTree)
LOCAL oItem1

Select RChile
Go Top
Do While !Eof()

//--> Busco el nombre de la Region y lo coloco com rama del arbol
Select Regiones
Seek RChile->Regi_chile
oItem1 := oTree:Add( Regiones->Nomb_regio, 0)

//--> Llena el arreglo con los manejadores de los objetos item
Aadd( ahItem, oItem1:hItem )

//--> llena este arrehlo con la clave que luego buscare
Aadd( aBound, RChile->Regi_chile )

SkIP

Enddo
RETURN Nil


*-----------------------------*
* muestro _ correspondientes a la rama del tree
* donde se hiso click
*-----------------------------*
FUNCTION Verarbol( nhItem )
LOCAL nPos:=0, cRegion:=""

nPos := Ascan( ahItem, nhItem)
//--> busco con el valor aBound en la tabla de regiones
If nPos > 0 .and. DbSeek( aBound[nPos] )
Select Regiones
cRegion := Regiones->Nomb_regio

Endif
RETURN cRegion //--> devuelve el nombre de la regio pero la puedes modificar para que retorne lo que quieras

Re: Tree: Error en oTree:GetSelected():GetParent():cPrompt

Posted: Thu Oct 01, 2009 10:19 pm
by MarioG
VPozo
Muchisimas gracias!
Lo implemento y te comento o, consulto si me quedaran dudas.
A mi proyecto lo tengo parado desde hace un buen tiempo debido a este viejo error para el que, lamentablemente, no hay soporte

Saludos