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
buzonjmartial
Posts: 81
Joined: Fri Apr 10, 2009 11:02 pm

Click en Header Browse

Postby buzonjmartial » Sat Sep 19, 2020 9:56 pm

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
User avatar
ignacio
Site Admin
Posts: 8681
Joined: Mon Apr 06, 2015 8:00 pm
Location: Madrid, Spain
Contact:

Re: Click en Header Browse

Postby ignacio » Mon Sep 21, 2020 10:22 am

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]
http://www.xailer.com
buzonjmartial
Posts: 81
Joined: Fri Apr 10, 2009 11:02 pm

Re: Click en Header Browse

Postby buzonjmartial » Mon Sep 21, 2020 12:53 pm

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:

Code: Select all

METHOD ArrayBrowse1Sort( oSender, aData, oCol, nAt, lDesc ) CLASS TFormScanArt
    oSender:Sort( oCol)
RETURN 0 ó NIL (NINGUNO FUNCIONA)
Un Saludo,
Joaquín Martínez
buzonjmartial
Posts: 81
Joined: Fri Apr 10, 2009 11:02 pm

Re: Click en Header Browse

Postby buzonjmartial » Fri Sep 25, 2020 11:43 am

Buenos días Ignacio,

¿ Tiene alguna solución este tema ? ¿ O no es posible ?
Un Saludo,
Joaquín Martínez
User avatar
ignacio
Site Admin
Posts: 8681
Joined: Mon Apr 06, 2015 8:00 pm
Location: Madrid, Spain
Contact:

Re: Click en Header Browse

Postby ignacio » Fri Sep 25, 2020 1:33 pm

buzonjmartial wrote: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:

Code: Select all

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]
http://www.xailer.com
buzonjmartial
Posts: 81
Joined: Fri Apr 10, 2009 11:02 pm

Re: Click en Header Browse

Postby buzonjmartial » Sun Sep 27, 2020 11:16 pm

Muchas gracias Ignacio,

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

Así lo he conseguido:

Code: Select all

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

Return to “Spanish”