Refrescar Treeview en tiempo de ejecución?

Refrescar Treeview en tiempo de ejecución?

Postby leandro » Tue Mar 25, 2008 4:58 am

Amigos del foro tengan buen día lo que pasa es que necesito refrescar los niveles de un treeview en tiempo de ejecucción. Saben como lo puedo hacer?

Al mismo tiempo necesito saber como ejecutar una acción al hacer doble clic sobre un item del arbol?

De antemano gracias.
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1489
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Postby Biel EA6DD » Tue Mar 25, 2008 9:05 am

1.- La manera de poder cambiar el contenido del tree, es cambiando los tTvItem deseados. Recuerda que el tree es un conteneedor de items.
Lo primero que necesitaras, es saber que item es el que quieres modificar.
Suponiendo que quieres cambiar el item actual, podrias hacerlo de la siguiente manera.
Code: Select all  Expand view
oTree:bChanged := {|o,i| i:=o:GetSelected(),i:SetText('Nuevo caption')}


2.- Esto es más facil, lo que tienes que hacer es definir el codeblock bLDblClick, con lo que quieras que se ejecute al hacer doble click.
Code: Select all  Expand view
oTree:bLDblClick :={||MsgStop('Se ha pulsado doble click')}
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Amigo muchas gracias como siempre por responder. ¡

Postby leandro » Tue Mar 25, 2008 7:48 pm

Amigo como siempre gracias por responder. Pero necesito hacer otra preguntica. Como hago para agregar un nuevo item. En tiempo de ejecucción. Osea cuando agrego un registro a la base de datos. o cuando lo borro como lo quito?

De antemano gracias.
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1489
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Postby Biel EA6DD » Fri Mar 28, 2008 12:15 pm

Para añadir un nuevo item por debajo del item que tienes seleccionanado

Code: Select all  Expand view
oTree:GetSelected():Add(cPrompt, nImage, Cargo)

Para borrar, en la version que tengo yo de FW, no tiene para eliminar items individuales, solo tiene para borrar ramas, pero tienes un aporte de Carles Aubia ( http://fivetechsoft.com/forums/viewtopic.php?t=6235), que añadiendo un metodo a la clase tTvItem, permite eliminar items. Puede que las ultimas versiones este metodo ya este incluido, lo desconozco.

La forma de ejeuctarlos
Code: Select all  Expand view
oTree:GetSelected():Delete()
oTree:GetSelected():DeleteBranches()
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Gracias..

Postby leandro » Fri Mar 28, 2008 1:11 pm

Amigo voy a checarlo y cualquier cosa te comento. De nuevo muy agradecido.
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1489
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Postby JmGarcia » Tue Oct 07, 2008 7:27 am

Biel EA6DD wrote:2.- Esto es más facil, lo que tienes que hacer es definir el codeblock bLDblClick, con lo que quieras que se ejecute al hacer doble click.
Code: Select all  Expand view
oTree:bLDblClick :={||MsgStop('Se ha pulsado doble click')}

¿ Y como se en que Item he pulsado doble click ?
¿ Como se si es padre o hijo ?

Gracias.
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
User avatar
JmGarcia
 
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA

Postby JmGarcia » Wed Oct 08, 2008 7:10 am

JmGarcia wrote:¿ Y como se en que Item he pulsado doble click ?
Me contesto yo: oTree:getSelText()

JmGarcia wrote:¿ Como se si es padre o hijo ?
Aqui ya tengo problemas.
Si pido oTree:GetSelected():GetParent():cPrompt y oTree:getSelText() estando en un hijo (2º nivel) me da el texto del padre y del hijo.
El problema es cuando estoy en el padre y entonces al buscar a su "padre" (abuelo en este caso) me da un error.

Como el bloque de codigo para doble click es el mismo si pongo esto:
Code: Select all  Expand view
oTree:bLDblClick:={||MsgStop(oTree:GetSelected():GetParent():cPrompt+;
                             oTree:getSelText())}
Cuando estoy en un padre me da Error BASE/1004 Class: 'NIL' has no exported method: CPROMPT

Entonces ¿ Como se en que nivel estoy ?

Por otro lado imaginaros un arbol (tree) que en el primer nivel tiene "nombres" y en el segundo "apellidos" y deseo cambiar el orden.
Como "borro" el tree para cambiar de orden nombre+apellidos o apellidos+orden y refrescarlo. Es decir quiero cambiar todos los datos del tree y repintarlo de nuevo.
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
User avatar
JmGarcia
 
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 154 guests