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.

Click en Header Browse

Foro de Xailer profesional en español
Responder
buzonjmartial
Mensajes: 100
Registrado: Vie Abr 10, 2009 11:02 pm

Click en Header Browse

Mensaje por buzonjmartial »

Buenas tardes,

No encuentro la manera de hacer lo siguiente:

Cuando se hace click en una columna de un browse, me la ordena automáticamente.
Pero necesito que después de ordenarla, poder ejecutar una función.
Si defino el evento onSort(), ya no me ordena, sólo ejecuta mi función.

Gracias,
Un Saludo,
Joaquín Martínez
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Click en Header Browse

Mensaje por ignacio »

Buenos días,

Puede realizar la ordenación llamando al método TBrowse:Sort( oCol, nMode )

nMode: 1) Ascendente, -1) Descendente

Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
buzonjmartial
Mensajes: 100
Registrado: Vie Abr 10, 2009 11:02 pm

Re: Click en Header Browse

Mensaje por buzonjmartial »

Buenos días Ignacio,

Dime como hacerlo porque se queda recursivamente llamando al evento onSort(), le ponga que retorne Nil o 0.

Aparte que en los fuentes de Xailer, el parámetro nSort no existe:
METHOD Sort( oCol ) CLASS XArrayBrowse

Este es el código que pruebo:

Código: Seleccionar todo

METHOD ArrayBrowse1Sort( oSender, aData, oCol, nAt, lDesc ) CLASS TFormScanArt
    oSender:Sort( oCol)
RETURN 0 ó NIL (NINGUNO FUNCIONA)
Un Saludo,
Joaquín Martínez
buzonjmartial
Mensajes: 100
Registrado: Vie Abr 10, 2009 11:02 pm

Re: Click en Header Browse

Mensaje por buzonjmartial »

Buenos días Ignacio,

¿ Tiene alguna solución este tema ? ¿ O no es posible ?
Un Saludo,
Joaquín Martínez
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Click en Header Browse

Mensaje por ignacio »

buzonjmartial escribió:Buenos días Ignacio,

¿ Tiene alguna solución este tema ? ¿ O no es posible ?
Espero que este código y mis explicaciones resuelvan sus dudas:

Código: Seleccionar todo

METHOD HeaderClick( nFlags, nPosX, nPosY ) CLASS XBrwColumn

	LOCAL xRet

	xRet := ::OnHeaderClick( nFlags, nPosX, nPosY )

	IF ( Valtype( xRet ) != "L" .OR. xRet ) .AND. ::oParent:lAutoOrder
      ::oParent:Sort( Self )
   ENDIF

RETURN xRet
Es es el código que se ejecuta cuando hace click en cualquier cabecera de columna. Como puede observar para que el método SORT se dispare son necesarias dos cosas: Que la propiedad TBrowse:lAutoOrder esté a verdadero y que si sobrecarga el evento OnHeaderClick, éste devuelva un valor NIL o un valor lógico de verdadero.

Por lo tanto, tiene esos dos mecanismos para PARAR la ejecución del método SORT por parte del control.

Un saludo
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
buzonjmartial
Mensajes: 100
Registrado: Vie Abr 10, 2009 11:02 pm

Re: Click en Header Browse

Mensaje por buzonjmartial »

Muchas gracias Ignacio,

Funcionando perfecta y limpiamente, necesitaba ordenar y posteriormente refrescar un proceso en la fila que se posicione.

Así lo he conseguido:

Código: Seleccionar todo

METHOD onHeaderClick( oSender, nFlags, nPosX, nPosY ) CLASS TFormScanPedidos
       oSender:oParent:Sort( oSender )
       ::oTmant:clickBrwPedidos()
return .F. // No haga nada después
Un Saludo,
Joaquín Martínez
Responder