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.

Ayuda Browse

Foro de Xailer profesional en español
buzonjmartial
Posts: 70
Joined: Fri Apr 10, 2009 11:02 pm

Ayuda Browse

Postby buzonjmartial » Sun Jan 05, 2020 11:37 am

Buenos días,

Necesitaría saber si sería posible conseguir el efecto siguiente con un Browse.

Hago una consulta SQL, que devuelve 200 registros por ejemplo y los cargo en un TArrayBrowse. Me muevo hasta la fila 87 por ejemplo, y ahora querría hacer lo siguiente:

Recargar la consulta SQL y posicionarme exactamente donde estaba, para que el usuario no se vuelva loco localizando de nuevo donde estaba posicionado.

¿ Existe alguna manera de conseguirlo ?
Un Saludo,
Joaquín Martínez
Ariel
Posts: 14
Joined: Tue Nov 26, 2019 12:28 pm

Re: Ayuda Browse

Postby Ariel » Sun Jan 05, 2020 2:19 pm

Hola,

si es un arraybrowse, podes hacer antes del nuevo sql :
nRecno:= ::oBrowse:nArrayAt
... tu sql ....
::oBrowse:Goto( nRecno )

fijate si funciona y comentanos como te fue.
Saludos.
User avatar
ignacio
Site Admin
Posts: 8622
Joined: Mon Apr 06, 2015 8:00 pm
Location: Madrid, Spain
Contact:

Re: Ayuda Browse

Postby ignacio » Mon Jan 06, 2020 5:54 pm

Con datacontrols no hay que hacer absolutamente nada, debería ser todo automático. Si usas un Arraybrowse, la solución propuesta por Ariel me parece correcta

Un saludo
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
http://www.xailer.com
buzonjmartial
Posts: 70
Joined: Fri Apr 10, 2009 11:02 pm

Re: Ayuda Browse

Postby buzonjmartial » Wed Jan 08, 2020 1:24 pm

Buenos días y gracias,

Pero no funciona.

Me vuelvo a explicar, sí se posiciona en ese registro, pero la posición en la pantalla es en la primera línea que se muestra del Browse, pero no en la línea 15 por ejemplo, que es donde estaba
el foco antes de releer la información.

Quiero que las líneas que se están mostrando en este momento en el Browse y el foco, sigan EXACTAMENTE igual que antes de recargar la información.

No me sirve hacer un refreshcurrent() porque han cambiado varias filas, no sólo la actual.
Un Saludo,
Joaquín Martínez
User avatar
ignacio
Site Admin
Posts: 8622
Joined: Mon Apr 06, 2015 8:00 pm
Location: Madrid, Spain
Contact:

Re: Ayuda Browse

Postby ignacio » Thu Jan 09, 2020 9:59 am

Buenos días,

Tenga en cuenta que lo que desea hacer puede fallar si se añade o borra un registro que afecte al browse. No obstante, esta sería la forma de hacerlo:

Code: Select all

   WITH OBJECT ::oBrowse
      nPos := :nRowSel  // Guardar posición relativa de la fila activa
     // Recarga del array (Código que usted debe incluir)
      :Refresh(.T.) // Refresco completo del browse
      :nRowSel := nPos // Establecemos la fila activa
      :Refresh( .f. )      // Forzamos un repintado (puede que no sea necesario)
   END WITH

Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
http://www.xailer.com
buzonjmartial
Posts: 70
Joined: Fri Apr 10, 2009 11:02 pm

Re: Ayuda Browse

Postby buzonjmartial » Sat Jan 11, 2020 2:45 pm

Gracias Ignacio,

Como me ha funcionado ha sido así:

Code: Select all

WITH OBJECT ::oBrowse
     nPos := :nArrayAt  // Guardar posición relativa de la fila activa
     // Recarga del array (Código que usted debe incluir)
     ::nArrayAt := nPos // Establecemos la fila activa
     :Refresh( .f. )      // Forzamos un repintado (puede que no sea necesario)
   END WITH



Con nRowSel se posicionaba moviéndose, no se si de esta manera con nArrayAt existe algún inconveniente.
Un Saludo,
Joaquín Martínez

Return to “Spanish”