Tree. Intercambio de posiciones

Post Reply
User avatar
Carles
Posts: 937
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona
Contact:

Tree. Intercambio de posiciones

Post by Carles »

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

#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..."

https://modharbour.app
https://modharbour.app/compass
https://forum.modharbour.app
User avatar
informaticaeloy
Posts: 118
Joined: Fri Dec 20, 2013 10:39 am
Location: Zaragoza, España
Contact:

Re: Tree. Intercambio de posiciones

Post by informaticaeloy »

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

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
Carles
Posts: 937
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona
Contact:

Re: Tree. Intercambio de posiciones

Post by Carles »

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

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

https://modharbour.app
https://modharbour.app/compass
https://forum.modharbour.app
User avatar
informaticaeloy
Posts: 118
Joined: Fri Dec 20, 2013 10:39 am
Location: Zaragoza, España
Contact:

Re: Tree. Intercambio de posiciones

Post by informaticaeloy »

Hola, prueba esto a ver:

Code: Select all


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
Carles
Posts: 937
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona
Contact:

Re: Tree. Intercambio de posiciones

Post by Carles »

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..."

https://modharbour.app
https://modharbour.app/compass
https://forum.modharbour.app
User avatar
Sebastián Almirón
Posts: 125
Joined: Mon Dec 12, 2005 9:56 am
Location: Moralzarzal - Spain

Re: Tree. Intercambio de posiciones

Post by Sebastián Almirón »

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
Post Reply