by 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