Vous êtes sur la page 1sur 9

Hace unos minutos me ayudaron a resolver el problema de volver al mismo registro en un Grid al llamar a un Formulario de Actualizacin y regresar: m.

ActRec = RECNO() DO FORM ACTUALIZAR GO m.ActRec Thisform.Grid1.SetFocus Me funciona perfecto: regreso al registro desde donde fue invocado el formulario de Actualizacin de Datos al cerrar ste ltimo. El problema que tengo ahora es que me mueve dicho registro hacia la primera fila del Grid, cuando realmente yo quisiera que se siga quedando en la lnea de donde fue llamado el Formulario de Actualizacin. Por ejemplo, si mi Grid1 esta mostrando 20 registros y estando posicionado el "Highlight" (el puntero) en el registro 12, cuando el usuario teclea "Doble Clic" se abre el formulario de Actualizar Datos. El usuario hace lo suyo y luego cierra el Formulario de Actualizar. Al regresar al Grid1, ciertamente regreso al registro 12, pero esta vez, el Grid me lo muestra como el primer registro del Grid1 y no me lo sigue mostrando en la posicin (ActiveRow) que estaba antes (que era la posicin 12). Habr alguna forma de que el Grid NO me mueva el registro

seleccionado hacia la posicin. Cambiar las propiedades "ActiveRow" o "RelativeRow" no me resulta posible porque son solamente propiedades Read-Only (hubiera sido excelente que se pudieran cambiar a discrecin pero en fin...) Nuevamente mil gracias por sus acertados consejos....

Marcar como spam

Daniel Snchez Ver perfil

Ms opciones 22 jun, 16:23

Se me ocurre que podras registrar en que fila del grid se encuentra el registro seleccionado grid.relativeRow (aparte de la posicin del registro en la tabla) y usando el mtodo del grid.doscroll() podras moverte para colocarlo en la posicin que tenia antes de ir al otro formulario. Ahora la pregunta sera porque se mueve tu grid o la visualizacin de tus datos, acaso vuelves a cargar o leer los datos que estas visualizando, porque yo normalmente hago aparentemente lo mismo que tu y no se mueve la posicin del registro ni el grid, en relacin a lo que tenia antes. Saludos -Daniel Snchez Escobar Investigacin y Desarrollo Reset Software & Sistemas Mvil +051-949398047 Trujillo - Per

Marcar como spam

GeoSys Diseo de Software Ver perfil

Ms opciones 22 jun, 19:40

Casi que de seguro en el otro formulario ordenas diferente el cursor o la tabla y lgico que al volver quedas en el rden que tena el formulario secundario, debes de ponerlo en el mismo orden de indice y despues el refresh, la grid va a quedar en la misma posicin como cuando la dejastes y te fuistes al segundo formulario. Ejemplo: mismo = RECNO() && Asigno el registro o fila actual. indice = ORDER() && Asigno el rden de ndice que tengo.

DO FORM FORMULARIO SET ORDER TO indice THISFORM.GRID1.SETFOCUS THISFORM.REFRESH Saludos Anthony Contreras Peralta Costa Rica.

Marcar como spam

GeoSys Diseo de Software Ver perfil

Ms opciones 22 jun, 19:43

Perdn el cdigo completo, me falt GO mismo: mismo = RECNO() && Asigno el registro o fila actual. indice = ORDER() && Asigno el rden de ndice que tengo. DO FORM FORMULARIO SET ORDER TO indice GO mismo THISFORM.GRID1.SETFOCUS THISFORM.REFRESH Saludos Anthony Contreras Peralta Costa Rica.

Marcar como spam

Edgar Acevedo Ver perfil

Ms opciones 22 jun, 21:24

Mil gracias Daniel y GeoSys por sus ideas. Me parece que no me expliqu bien, por lo que les pongo un ejemplo: Tengo un Grid que tiene un listado de clientes, los cuales me aparecen desplegados de la siguiente forma: Cdigo Cliente 01 Carlos Rodas *<------- Este es el primer registro desplegado en el GRID * 02 Jorge Gonzalez 03 Carlos Thomas 04 Roberto Morales 05 Fernando Acevedo 06 Andrs Jimenez 07 Estuardo Arriaga *<------- Este es el registro donde doy doble clic porque lo quiero actualizar* 08 Pablo Galvez 09 Juan Jos Lima 10 Alfonso Sandoval 11 Csar Prez

12 13

Max Fuentes .... etc, etc

Al teclear doble clic sobre el cliente *07 Estuardo Arriaga* se abre el "Formulario de Actualizacin de Datos". NO CAMBIO para nada el Set Order, porque ya esto sobre el registro deseado. No realizo ningn SEEK o cosa por el estilo. Los datos modificados por el usuario se guardan en la tabla usando el comando *GATHER*. El comportamiento extrao viene al salir del Formulario pues ahora, me aparece el Grid de la siguiente forma: Cdigo Cliente 07 Estuardo Arriaga *<------- Este es el registro que ANTES estaba en la fila 7 del Grid, pero luego de volver del * 08 Pablo Galvez* Formulario de* *Actualizacin, AHORA esta en la fila 1 del Grid. Ntese que el ordenamiento * 09 Juan Jos Lima *NO CAMBI, porque ningn indice fue tocado. El puntero (highlight) regres siempre al * 10 Alfonso Sandoval *mismo registro. El asunto es que subi desde la fila 7 hacia la fila 1.* 11 Csar Prez 12 Max Fuentes 13 .... etc, etc * *Lo que yo quisiera es que el registro actualizado siguiera en la MISMA LINEA donde estaba, es decir de la forma original que nuevamente copio abajo: Cdigo Cliente 01 Carlos Rodas *<------- Este ERA... el primer registro desplegado en el GRID "antes" de llamar al otro formulario * 02 Jorge Gonzalez 03 Carlos Thomas 04 Roberto Morales 05 Fernando Acevedo 06 Andrs Jimenez 07 Estuardo Arriaga *<------- Este es el registro ACTUALIZADO, que "debi" haber continuado en la linea 7...* 08 Pablo Galvez 09 Juan Jos Lima 10 Alfonso Sandoval 11 Csar Prez 12 Max Fuentes 13 .... etc, etc El formulario invocado solamente toma los valores de los campos, los pone en pantalla para su actualizacin y los vuelve a guardar mediante un *GATHER*. Eso es todo....!!!! No hay *Set Order*, no hay *Seek*, no hay *GO*. Ya utilic el *Set Focus*, pero sigue igual y curiosamente el *DoScroll*pareciera ser ignorado... Alguna otra idea ? . El 22 de junio de 2011 19:43, GeoSys Diseo de Software <geosy...@gmail.com>escribi: - Mostrar texto de la cita -

Marcar como spam

Antonio Meza Ver perfil hola!!

Ms opciones 22 jun, 21:35

Posiblemente tu problema esta en el GO de regreso, en letras rojas te muestro m.ActRec = RECNO() DO FORM ACTUALIZAR GO m.ActRec Thisform.Grid1.SetFocus Aqui estas moviendo el puntero de la tabla!!! Por otro lado creo que tu rutina la estas complitando y generando muchos remiendos, si gustas te puedo ayudar pero necesitaria me enviaras mas informacion de lo que tienes!! saludos Antonio Meza

Marcar como spam

Edgar Acevedo Ver perfil *Mil gracias Antonio:

Ms opciones 22 jun, 21:48

La forma indicada NO ERA la original. Lo puse as solo para tratar de corregir este comportamiento. El asunto realmente estaba as: m.ActRec = RECNO() <------ Esta NO ESTABA DO FORM ACTUALIZAR GO m.ActRec <------ Esta TAMPOCO ESTABA Thisform.Grid1.SetFocus Es decir, solamente estaba: **DO FORM ACTUALIZAR Thisform.Grid1.SetFocus Pero el comportamiento sigue siendo el mismo. Tendr que trabajar un poco para poderte "armar" el cdigo a examinar porque esta dentro de una enorme aplicacin. Mil gracias por tu ofrecimiento...!!!! Salu2, Edgar * El 22 de junio de 2011 21:35, Antonio Meza <solver...@gmail.com> escribi:

- Mostrar texto de la cita -

Marcar como spam

Antonio Meza Ver perfil

Ms opciones 22 jun, 23:37

Te comento que tengo muchos formularios a los que muestro un listado de clientes, proveedores, ejecutivos, etc en un Grid, al cual doy DobleClick y abro otro Formulario para mostrar ya sea los datos generales o realizar otra accion segun la tabla, pero el puntero del grid nunca se mueve, siempre se queda donde di doble cick. Bueno uso Vistas Locales, sesion privada de datos, igual y tu problema es que estas moviendo tu tabla en alguna parte del codigo, nunca eh usado GATHER pero segun lo que dice la ayuda creo que eso te ha de estar moviendo el cursor, intenta hacer esto antes del GATHER Select TUTABLA xRecno = Recno() Gather .... Go xRecno Saludos Antonio Meza

Marcar como spam

GeoSys Diseo de Software Ver perfil

Ms opciones 23 jun, 20:26

Al teclear doble clic sobre el cliente *07 Estuardo Arriaga* se abre el "Formulario de Actualizacin de Datos". NO CAMBIO para nada el Set Order, porque ya esto sobre el registro deseado. No ser que en el "Formulario de Actualizacin de Datos", tengas asignado el entorno de datos de esa misma tabla. O sea, al formulario secundario no debes tenerle asignado ninguna tabla en el entorno de datos, porque ya la tabla est abierta al ser un formulario secundario y me imagino que es modal. Te sugieron que revises en View el DataEnvironment a ver si no tienes esa misma tabla asignada, si es as qutala de ese segundo formulario. Aunque yo cuando lo tengo as, al volver del formulario ordeno y busco el mismo registro, actualizo el form y la grid sigue en la misma fila y orden original que tena antes de ir al segundo formulario, no debera cambiar, habra que ver el GHATER si eso lo que est distorsionando. Saludos Anthony Contreras Peralta Costa Rica.

Marcar como spam

Edgar Acevedo Ver perfil Gracias GeoSys:

Ms opciones 23 jun, 23:49

Pues te cuento que no utilizo para nada el DataEnvironment. El nuevo formulario que se carga es un formulario sin entorno de datos definido ya que no lo necesita porque basa su informacin en el registro del Grid de donde fue llamado. De all extrae la data, sin seleccionar tabla ni nada porque la tabla donde trabaja ya viene tambin definida desde el Grid. Estoy preparando un ejemplo para subirlo. Mil gracias....!!! El 23 de junio de 2011 20:26, GeoSys Diseo de Software <geosy...@gmail.com>escribi: - Mostrar texto de la cita -

Marcar como spam

GeoSys Diseo de Software Ver perfil

Ms opciones 23 jun, 23:58

Si es interesante, porque yo hace tiempos lo uso as y no he tenido problemas de esa ndole, cuando regreso la grid se queda igual que como la dej al igual que los registros. Cuando regreses hace un BROWSE ANTES DE ENFOCAR LA GRID A VER SI LA TABLA O CURSOR CAMBIO O SI EL PROBLEMA ES CON EL GRID MERAMENTE. Saludos Anthony Contreras Peralta Costa Rica.

Marcar como spam

Edgar Acevedo Ver perfil

Ms opciones 24 jun, 00:02

No es con el puntero porque el GRID "si regresa" al mismo registro de donde fue llamado. Esa parte "esta bien". Lo raro es que si el registro que yo llam estaba a medio Grid, cuando regreso del formulario, el registro en cuestin ahora aparece hasta arriba, como el primer registro del Grid y "si aparece" seleccionado (highlited). Es decir, el puntero NO SE MUEVE de lugar, es el registro el que cambia de lugar: de medio grid, sube a ser el primero del Grid. Gracias por tu seguimiento, Edgar

El 23 de junio de 2011 23:58, GeoSys Diseo de Software <geosy...@gmail.com>escribi: - Mostrar texto de la cita -

Marcar como spam

Intel Man Ver perfil

Ms opciones 24 jun, 07:03

Hola, lo que podrias hacer entonces es usar otra logica, yo usaria algo asi: Abrir 2 veces la misma tabla, una para el grid (tabla1) y otra para tu formulario de modifiacion. (tabla2) Creo que lo que quieres modificar es tu tabla de cliente, pero da lo mismo como yo te seguiero. La tabla del grid (tabla1) deberia tener el codigo del cliente, entonces cuando llamas al formulario de modifiacion haces un seek al codigo del cliente: =seek(tabla1.codigo_cliente,"tabla2","tuindicecodigo_cliente") do form tu_form_modifacion Pruebalo de esa manera y asi no deberia moverse el cursor. Saludos Date: Fri, 24 Jun 2011 00:02:23 -0600 Subject: Re: [vfp] Mantener la posicin del ActiveRow en un Grid. From: aperso...@gmail.com To: publicesvfoxpro@googlegroups.com No es con el puntero porque el GRID "si regresa" al mismo registro de donde fue llamado. Esa parte "esta bien". Lo raro es que si el registro que yo llam estaba a medio Grid, cuando regreso del formulario, el registro en cuestin ahora aparece hasta arriba, como el primer registro del Grid y "si aparece" seleccionado (highlited). Es decir, el puntero NO SE MUEVE de lugar, es el registro el que cambia de lugar: de medio grid, sube a ser el primero del Grid. Gracias por tu seguimiento, Edgar El 23 de junio de 2011 23:58, GeoSys Diseo de Software <geosy...@gmail.com> escribi: Si es interesante, porque yo hace tiempos lo uso as y no he tenido problemas de esa ndole, cuando regreso la grid se queda igual que como la dej al igual que los registros. Cuando regreses hace un BROWSE ANTES DE ENFOCAR LA GRID A VER SI LA TABLA O CURSOR CAMBIO O SI EL PROBLEMA ES CON EL GRID MERAMENTE. Saludos Anthony Contreras Peralta Costa Rica.

Marcar como spam

ibania blanco Ver perfil Ms opciones 27 jun, 16:08 lo que creo es que no detallas como abris la tabla del form1, ahi debe de estar el problema, ya que tu tabla del form1 se cambia la posicion del registro, mira siempre llena el form1 con select sql y con los datos del form1 corregis los datos del form2 asi no te cambiara el form1 On 24 jun, 07:03, Intel Man <intel_man_in...@hotmail.com> wrote: - Mostrar texto de la cita -

Marcar como spam

Edgar Acevedo Ver perfil *PROBLEMA ARREGLADO:

Ms opciones 27 jun, 16:29

Abajo del GRID (y obviamente afuera de l) haban 3 mensajes que tena en controles TextBox respectivamente. Haba un comando que les modificaba el color de fondo de la siguiente manera: This.SetAll("BackColor", RGB(215,235,255)) Esto era lo que me provocaba el comportamiento extrao en el GRID pues tambin lo estaba modificando. Todo se arregl con simplemente ser mas especfico: This.SetAll("BackColor", RGB(215,235,255), "Text") Gracias a todos por sus ideas. Me ayudaron mucho a descartar unas y otras cosas hasta dar con el problema en s. * El 22 de junio de 2011 11:25, Edgar Acevedo <aperso...@gmail.com> escribi:

Vous aimerez peut-être aussi