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 ?
Ayuda Browse
-
- Mensajes: 100
- Registrado: Vie Abr 10, 2009 11:02 pm
Ayuda Browse
Un Saludo,
Joaquín Martínez
Joaquín Martínez
Re: Ayuda Browse
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.
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.
- ignacio
- Site Admin
- Mensajes: 9256
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Re: Ayuda Browse
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
Un saludo
-
- Mensajes: 100
- Registrado: Vie Abr 10, 2009 11:02 pm
Re: Ayuda Browse
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.
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
Joaquín Martínez
- ignacio
- Site Admin
- Mensajes: 9256
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Re: Ayuda Browse
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:
Saludos
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:
Código: Seleccionar todo
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
-
- Mensajes: 100
- Registrado: Vie Abr 10, 2009 11:02 pm
Re: Ayuda Browse
Gracias Ignacio,
Como me ha funcionado ha sido así:
Con nRowSel se posicionaba moviéndose, no se si de esta manera con nArrayAt existe algún inconveniente.
Como me ha funcionado ha sido así:
Código: Seleccionar todo
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
Joaquín Martínez