In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Control TTreeView

Foro público de Xailer en español
Responder
Juan Jose Zamora
Mensajes: 5
Registrado: Lun Feb 07, 2005 4:30 pm

Control TTreeView

Mensaje por Juan Jose Zamora »

Hola a todos, tengo un problema con el objeto ttreeview. Si utilizo la
forma de descrita en el ejemplo TreeView que es la de primero insertar
la imagenes y despues insertar los item, todo funciona correctamente,
tal y como viene el Method Tvcreate:
METHOD TVCreate( oSender ) CLASS TForm1
local oItem
WITH OBJECT oSender
:InsertImage("printer")
:InsertImage("database")
:InsertItem("First item at the root", 1 )
:InsertItem("Second item at the root", 1)
oItem := :InsertItem("Third item at the root",2, ,.T.)
oItem:InsertItem("Item after third item",1)
oItem:InsertItem("Another item after third item",2)
:ExpandAll()
END
RETURN Nil
Sin embargo, si utilizo la forma de insertintem y en esta incluyo el
bitmap, muestra las imagenes cambiadas, en el primer item aparece en vez
de printer un database . El ejemplo anterior quedaria de la siguiente forma:
METHOD TVCreate( oSender ) CLASS TForm1
local oItem
WITH OBJECT oSender
:InsertItem("First item at the root", "printer" )
:InsertItem("Second item at the root", "printer")
oItem := :InsertItem("Third item at the root", "database", ,.T.)
oItem:InsertItem("Item after third item", "printer")
oItem:InsertItem("Another item after third item", "database" )
:ExpandAll()
END
RETURN Nil
¿Estoy haciendo algo mal?
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9447
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Control TTreeView

Mensaje por ignacio »

Juan,
Piense que todos los objetos images que incluya pasan a formar parte de su
objeto oImageList, y por lo tanto no tiene ningún sentido añadir el mismo
Bitmap dos o más veces. El propio objeto oImageList si se le intenta añadir
una imagen que ya tiene, sencillamente, no la incluye y retorna la posición
en la que se encuentra, por lo que que ambos sistemas de alimentar el
TreeView deberían funcionar, aunque personalmente creo que el primero es
mucho más indicado. No obstante, si nos manda un pequeño ejemplo que muestre
el posible error le echaremos un vistazo.
Puede probar lo siguiente:
> :InsertItem("First item at the root", "printer" )
En este caso la propiedad nImage del item recien creado debería valer 1
> :InsertItem("Second item at the root", "printer")
En este caso la propiedad nImage del item recien creado debería valer 1
> oItem := :InsertItem("Third item at the root", "database", ,.T.)
En este caso la propiedad nImage del item recien creado debería valer 2
> oItem:InsertItem("Item after third item", "printer")
En este caso la propiedad nImage del item recien creado debería valer 1
> oItem:InsertItem("Another item after third item", "database" )
En este caso la propiedad nImage del item recien creado debería valer 2
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Juan José Zamora" <jzamoras@ya.com> escribió en el mensaje
news:46400918$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Hola a todos, tengo un problema con el objeto ttreeview. Si utilizo la
> forma de descrita en el ejemplo TreeView que es la de primero insertar la
> imagenes y despues insertar los item, todo funciona correctamente, tal y
> como viene el Method Tvcreate:
>
> METHOD TVCreate( oSender ) CLASS TForm1
> local oItem
>
> WITH OBJECT oSender
> :InsertImage("printer")
> :InsertImage("database")
> :InsertItem("First item at the root", 1 )
> :InsertItem("Second item at the root", 1)
> oItem := :InsertItem("Third item at the root",2, ,.T.)
> oItem:InsertItem("Item after third item",1)
> oItem:InsertItem("Another item after third item",2)
> :ExpandAll()
> END
>
> RETURN Nil
>
> Sin embargo, si utilizo la forma de insertintem y en esta incluyo el
> bitmap, muestra las imagenes cambiadas, en el primer item aparece en vez
> de printer un database . El ejemplo anterior quedaria de la siguiente
> forma:
>
> METHOD TVCreate( oSender ) CLASS TForm1
>
> local oItem
>
> WITH OBJECT oSender
> :InsertItem("First item at the root", "printer" )
> :InsertItem("Second item at the root", "printer")
> oItem := :InsertItem("Third item at the root", "database", ,.T.)
> oItem:InsertItem("Item after third item", "printer")
> oItem:InsertItem("Another item after third item", "database" )
> :ExpandAll()
> END
>
> RETURN Nil
>
> ¿Estoy haciendo algo mal?
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Juan Jose Zamora
Mensajes: 5
Registrado: Lun Feb 07, 2005 4:30 pm

Control TTreeView

Mensaje por Juan Jose Zamora »

Gracias por responder tan pronto, he realizado modificaciones en el
ejemplo vuestro TreeView que viene en el directorio SamplesTreeview, en
concreto el metodo TVCreate ( te pongo los valores que me retorna entre
comentarios)
METHOD TVCreate( oSender ) CLASS TForm1
local oItem
LOCAL n, oItem1, oItem2, oItem3, oItem4
WITH OBJECT oSender
/* // Como esta
:InsertImage("printer")
:InsertImage("database")
:InsertItem("First item at the root", 1 )
:InsertItem("Second item at the root", 1)
oItem := :InsertItem("Third item at the root",2, ,.T.)
oItem:InsertItem("Item after third item",1)
oItem:InsertItem("Another item after third item",2)
:ExpandAll()
*/
/* // con :InsertImage
n:= :InsertImage("printer")
msginfo( n ) // Sale 2
n:= :InsertImage("database")
msginfo( n ) // Sale 3
n:= :InsertImage("printer")
msginfo( n ) // Sale 1
n:= :InsertImage("database")
msginfo( n ) // Sale 2
n:= :InsertImage("printer")
msginfo( n ) // Sale 1
n:= :InsertImage("database")
msginfo( n ) // Sale 2
:InsertItem("First item at the root", 1 )
:InsertItem("Second item at the root", 1)
oItem := :InsertItem("Third item at the root",2, ,.T.)
oItem:InsertItem("Item after third item",1)
oItem:InsertItem("Another item after third item",2)
:ExpandAll()
*/
oItem1:= :InsertItem("First item at the root", "printer" )
msginfo( oItem1:nImage ) // vale 2
oItem2:= :InsertItem("Second item at the root", "printer")
msginfo( oItem2:nImage ) // vale 1
oItem := :InsertItem("Third item at the root", "database", ,.T.)
msginfo( oItem:nImage ) // vale 3
oItem3:= oItem:InsertItem("Item after third item", "printer")
msginfo( oItem3:nImage ) // vale 1
oItem4:= oItem:InsertItem("Another item after third item",
"database" )
msginfo( oItem4:nImage ) // Vale 2
:ExpandAll()
END
RETURN Nil
//-----------------------
Fijate que en el primer printer vale 2 cuando tenia que valer uno, sin
embargo la segunda vez que metemos otro objeto printer nos retorna el
valor correcto, es decir 1
Saludos.
Ignacio Ortiz de Zúñiga escribió:
> Juan,
>
> Piense que todos los objetos images que incluya pasan a formar parte de su
> objeto oImageList, y por lo tanto no tiene ningún sentido añadir el mismo
> Bitmap dos o más veces. El propio objeto oImageList si se le intenta añadir
> una imagen que ya tiene, sencillamente, no la incluye y retorna la posición
> en la que se encuentra, por lo que que ambos sistemas de alimentar el
> TreeView deberí­an funcionar, aunque personalmente creo que el primero es
> mucho más indicado. No obstante, si nos manda un pequeño ejemplo que muestre
> el posible error le echaremos un vistazo.
>
> Puede probar lo siguiente:
>
>> :InsertItem("First item at the root", "printer" )
> En este caso la propiedad nImage del item recien creado deberí­a valer 1
>
>> :InsertItem("Second item at the root", "printer")
> En este caso la propiedad nImage del item recien creado deberí­a valer 1
>
>> oItem := :InsertItem("Third item at the root", "database", ,.T.)
> En este caso la propiedad nImage del item recien creado deberí­a valer 2
>
>> oItem:InsertItem("Item after third item", "printer")
> En este caso la propiedad nImage del item recien creado deberí­a valer 1
>
>> oItem:InsertItem("Another item after third item", "database" )
> En este caso la propiedad nImage del item recien creado deberí­a valer 2
>
> Un saludo,
>
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9447
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Control TTreeView

Mensaje por ignacio »

Juan José,
Por favor, pruebe con el siguiente módulo que le adjunto. Gracias por su
colaboración.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Juan José Zamora" <jzamoras@ya.com> escribió en el mensaje
news:[email=46406e06@ozsrv2.ozlan.local...]46406e06@ozsrv2.ozlan.local...[/email]
> Gracias por responder tan pronto, he realizado modificaciones en el
> ejemplo vuestro TreeView que viene en el directorio SamplesTreeview, en
> concreto el metodo TVCreate ( te pongo los valores que me retorna entre
> comentarios)
>
> METHOD TVCreate( oSender ) CLASS TForm1
> local oItem
>
> LOCAL n, oItem1, oItem2, oItem3, oItem4
>
> WITH OBJECT oSender
>
> /* // Como esta
> :InsertImage("printer")
> :InsertImage("database")
> :InsertItem("First item at the root", 1 )
> :InsertItem("Second item at the root", 1)
> oItem := :InsertItem("Third item at the root",2, ,.T.)
> oItem:InsertItem("Item after third item",1)
> oItem:InsertItem("Another item after third item",2)
> :ExpandAll()
> */
>
> /* // con :InsertImage
>
> n:= :InsertImage("printer")
> msginfo( n ) // Sale 2
> n:= :InsertImage("database")
> msginfo( n ) // Sale 3
> n:= :InsertImage("printer")
> msginfo( n ) // Sale 1
> n:= :InsertImage("database")
> msginfo( n ) // Sale 2
> n:= :InsertImage("printer")
> msginfo( n ) // Sale 1
> n:= :InsertImage("database")
> msginfo( n ) // Sale 2
>
> :InsertItem("First item at the root", 1 )
> :InsertItem("Second item at the root", 1)
> oItem := :InsertItem("Third item at the root",2, ,.T.)
> oItem:InsertItem("Item after third item",1)
> oItem:InsertItem("Another item after third item",2)
> :ExpandAll()
> */
>
>
> oItem1:= :InsertItem("First item at the root", "printer" )
> msginfo( oItem1:nImage ) // vale 2
> oItem2:= :InsertItem("Second item at the root", "printer")
> msginfo( oItem2:nImage ) // vale 1
> oItem := :InsertItem("Third item at the root", "database", ,.T.)
> msginfo( oItem:nImage ) // vale 3
> oItem3:= oItem:InsertItem("Item after third item", "printer")
> msginfo( oItem3:nImage ) // vale 1
> oItem4:= oItem:InsertItem("Another item after third item",
> "database" )
> msginfo( oItem4:nImage ) // Vale 2
> :ExpandAll()
>
>
>
> END
>
> RETURN Nil
> //-----------------------
> Fijate que en el primer printer vale 2 cuando tenia que valer uno, sin
> embargo la segunda vez que metemos otro objeto printer nos retorna el
> valor correcto, es decir 1
>
> Saludos.
>
>
>
>
>
> Ignacio Ortiz de Zúñiga escribió:
>> Juan,
>>
>> Piense que todos los objetos images que incluya pasan a formar parte de
>> su
>> objeto oImageList, y por lo tanto no tiene ningún sentido añadir el mismo
>> Bitmap dos o más veces. El propio objeto oImageList si se le intenta
>> añadir
>> una imagen que ya tiene, sencillamente, no la incluye y retorna la
>> posición
>> en la que se encuentra, por lo que que ambos sistemas de alimentar el
>> TreeView deberían funcionar, aunque personalmente creo que el primero es
>> mucho más indicado. No obstante, si nos manda un pequeño ejemplo que
>> muestre
>> el posible error le echaremos un vistazo.
>>
>> Puede probar lo siguiente:
>>
>>> :InsertItem("First item at the root", "printer" )
>> En este caso la propiedad nImage del item recien creado debería valer 1
>>
>>> :InsertItem("Second item at the root", "printer")
>> En este caso la propiedad nImage del item recien creado debería valer 1
>>
>>> oItem := :InsertItem("Third item at the root", "database", ,.T.)
>> En este caso la propiedad nImage del item recien creado debería valer 2
>>
>>> oItem:InsertItem("Item after third item", "printer")
>> En este caso la propiedad nImage del item recien creado debería valer 1
>>
>>> oItem:InsertItem("Another item after third item", "database" )
>> En este caso la propiedad nImage del item recien creado debería valer 2
>>
>> Un saludo,
>>


Attached files TreeView.rar (5.8 KB)Â
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Juan Jose Zamora
Mensajes: 5
Registrado: Lun Feb 07, 2005 4:30 pm

Control TTreeView

Mensaje por Juan Jose Zamora »

Ignacio, al enlazar con el modulo me da errores de Unresolved external
'_HB_FUN_XTREEVIEW_SELECTITEMC', y varios mas, por lo que no puedo crear
el ejecutable.
Saludos.
Ignacio Ortiz de Zúñiga escribió:
> Juan José,
>
> Por favor, pruebe con el siguiente módulo que le adjunto. Gracias por su
> colaboración.
>
> Un saludo,
>
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9447
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Control TTreeView

Mensaje por ignacio »

Juan José,
Le adjunto otro fichero. Perdone por las molestias.
Un saludo
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Juan José Zamora" <jzamoras@ya.com> escribió en el mensaje
news:46408cd1$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Ignacio, al enlazar con el modulo me da errores de Unresolved external
> '_HB_FUN_XTREEVIEW_SELECTITEMC', y varios mas, por lo que no puedo crear
> el ejecutable.
>
> Saludos.
>
>
>
>
> Ignacio Ortiz de Zúñiga escribió:
>> Juan José,
>>
>> Por favor, pruebe con el siguiente módulo que le adjunto. Gracias por su
>> colaboración.
>>
>> Un saludo,
>>


Attached files ITreeview.rar (4.9 KB)Â
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Juan Jose Zamora
Mensajes: 5
Registrado: Lun Feb 07, 2005 4:30 pm

Control TTreeView

Mensaje por Juan Jose Zamora »

Ignacio, ahora funciona Ok.
Saludos y gracias por tu atencion.
Ignacio Ortiz de Zúñiga escribió:
> Juan José,
>
> Le adjunto otro fichero. Perdone por las molestias.
>
> Un saludo
>
Responder