Tree. Intercambio de posiciones

Tree. Intercambio de posiciones

Postby Carles » Mon Feb 03, 2014 3:04 pm

Hola a todos,

Alguien sabe como podria hacer un intercambiar de posiciones en un Tree ? (Por ejemplo pasar el Item1 a la posicion del 3)

Code: Select all  Expand view
#include "FiveWin.ch"

FUNCTION Main()

   local oWnd, oTree, oItem1
   local oChild1,oChild2,oChild3

   DEFINE WINDOW oWnd FROM 3, 6 TO 20, 70 COLOR "N/W"

      oTree := TTreeView():New( 2, 0, oWnd )

      oItem1 := oTree:Add( "Page - 1", 1 )

        oChild1 := oItem1:Add( "Item 1", 1 )
        oChild2 := oItem1:Add( "Item 2", 1 )
        oChild3 := oItem1:Add( "Item 3", 1 )

      oWnd:oClient := oTree

   ACTIVATE WINDOW oWnd

RETU NIL


Gracias !!!
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1090
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Re: Tree. Intercambio de posiciones

Postby informaticaeloy » Mon Feb 03, 2014 4:21 pm

Hola, no se si te funcionaría algo como guardar oChild1 := oItem1:Add( "Item 1", 1 ) en un temporal, luego poner en el 1 el 3 y el temporal en el 1:

Code: Select all  Expand view

local oWnd, oTree, oItem1
local oChild1,oChild2,oChild3,oTMP

oTMP    := oChild1
oChild1 := oChild3
oChild3 := oTMP

oTree : Update()

 
 


No se si funcionaría, no lo he probado. Un saludo.
Windows 10 + FWH 20.08 + BCC 7.4 + Harbour 3.2.0 + PSPad 5.0.3
User avatar
informaticaeloy
 
Posts: 118
Joined: Fri Dec 20, 2013 10:39 am
Location: Zaragoza, España

Re: Tree. Intercambio de posiciones

Postby Carles » Tue Feb 04, 2014 8:28 am

Esta forma no nunciona, gracias.
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1090
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Re: Tree. Intercambio de posiciones

Postby informaticaeloy » Tue Feb 04, 2014 9:32 am

Hola, prueba esto a ver:

Code: Select all  Expand view


oChild3 := oItem1:SetText("Item 3")
oChild1 := oItem1:SetText("Item 1")

 
Windows 10 + FWH 20.08 + BCC 7.4 + Harbour 3.2.0 + PSPad 5.0.3
User avatar
informaticaeloy
 
Posts: 118
Joined: Fri Dec 20, 2013 10:39 am
Location: Zaragoza, España

Re: Tree. Intercambio de posiciones

Postby Carles » Tue Feb 04, 2014 9:41 am

Hola,

No quiero cambiar solo el texto, sino todo el objeto en si (cargo, imagen, texto, ...)


Gracias.
C.
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1090
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Re: Tree. Intercambio de posiciones

Postby Sebastián Almirón » Fri Feb 14, 2014 6:17 pm

Hola Carles, estoy utilizando MyRpt, ante todo muchas gracias por compartir tu trabajo.

El caso es que con lo del cambio de posiciones he notado que el orden de impresión es el del tree de oInspect, con lo cual si metemos una imagen nueva como fondo, se coloca la última y hace que lo que haya antes no se imprima.

De momento he hecho estas modificaciones a los métodos PosTop() y PosBottom() de TRptForm, con ello consigo que cuando pulso el botón traer al frente, se coloque el último del tree y cuando pulso el botón llevar al fondo, se coloque el primero. Creo que es un poco chapuzo, falta depurarlo, eso para el lunes, pero de momento me sirve.

Saludos

*-----------------------------------
METHOD PosTop( oObj) CLASS TRptForm
*-----------------------------------
local oitemact

IF !::lFocus
RETU NIL
ENDIF

IF oObj == NIL
oObj := ::oControlItem:oObj
ENDIF

IF ValType( oObj ) <> 'O'
RETU NIL
ENDIF

oObj:CoorsUpdate()

SetWindowPos( oObj:hWnd, HWND_TOP ,;
oObj:nTop, oObj:nLeft ,;
oObj:nWidth, oObj:nHeight )

if ::lactive
oitemact := ::oControlItem
::additem(oitemact:ntop, oitemact:nleft)
::oControlItem := oitemact
::oRpt:oInspect:DeleteItem(oitemact)
::oRpt:oInspect:AddItem(oitemact)
endif


RETU NIL

*--------------------------------
METHOD PosBottom() CLASS TRptForm
*--------------------------------
LOCAL oObj := ::oControlItem:oObj, oitemact, aitems, nI, oitemsel, csection

IF ValType( oObj ) <> 'O'
RETU NIL
ENDIF

oObj:CoorsUpdate()

SetWindowPos( oObj:hWnd, HWND_BOTTOM ,;
oObj:nTop, oObj:nLeft ,;
oObj:nWidth, oObj:nHeight )


if ::lactive

cSection := ::oControlItem:cSection
citemsel := ::oControlItem:cID
aItems := ::oRpt:oInspect:GetItemsSection( cSection )

for nI := 1 To Len( aItems )
if aitems[nI]:cID <> citemsel
oitemact := aitems[nI]
::additem(oitemact:ntop, oitemact:nleft)
::oControlItem := oitemact
::oRpt:oInspect:DeleteItem(oitemact)
::oRpt:oInspect:AddItem(oitemact)
endif
next nI
endif

RETU NIL
User avatar
Sebastián Almirón
 
Posts: 155
Joined: Mon Dec 12, 2005 9:56 am
Location: Moralzarzal - Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 81 guests