FoxPro/Visual FoxPro - PROBLEMAS AL SELECCIONAR REGISTRO EN UN GRID

   
Vista:

PROBLEMAS AL SELECCIONAR REGISTRO EN UN GRID

Publicado por VICTOR MANUEL (278 intervenciones) el 04/04/2014 22:01:59
Buenas Tardes,

Tengo un formulario que contiene un GRID donde muestro el resultado de una busqueda. Resulta que en ocasiones, no siempre, al hacer click sobre un registro el mismo no se pone como escogido (highlighted) sino que no lo puedo elegir y tengo que usar las flechas del teclado para llegar alli y poder entonces escogerlo mediante la Tecla Intro.

Es extraño, porque solo me pasa en los GRIDs contenidos dentro de ese formulario principal. Nunca me sucede en otros grids que estan en otros formularios.

Ademas, otra pregunta, cada vez que compilo el projecto, tengo que elegir que me cree el EXE y ponerle todas las opciones al compilador como REcompile all Files, Display errors. Esto no me sucedia antes.

Otras mas, antes podia tener todos las barras desplegadas en VFP mientras trabajaba los formularios. Al compilar ninguna de estas barras aparecia en mi aplicacion. Ahora si aparecen...y no las quiero. La unica forma que no aparezcan es que las quite del entorno de VFP mientras estoy trabajando y compile asi. Realmente me acostumbre a trabajar con las Barras visibles.

Alguna sugerencia, bienvenida

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

PROBLEMAS AL SELECCIONAR REGISTRO EN UN GRID

Publicado por VICTOR MANUEL (278 intervenciones) el 07/04/2014 18:43:58
Hola,

Para aclarar mas...no puedo seleccionar el registro con el Mouse...para llegar al listbox tengo que hacerlo con las flechas y luego tocar "enter o Intro".
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

PROBLEMAS AL SELECCIONAR REGISTRO EN UN GRID

Publicado por VICTOR MANUEL (278 intervenciones) el 11/04/2014 00:16:04
Estimados amigos,

Veo que no hay respuesta. Pienso que debo explicar mejor la situacion.

Tengo un Formulario con varias PESTAÑAS PRINCIPALES. Una de esas pestañas me permite ver y modificar la Historia Clinica del Paciente. Dentro de esa pestaña hay otro juego mas de sub_pestañas que me permiten AGREGAR/MODIFICAR Citas y la otra sub-pestaña, Modificar Antecedentes Personales del paciente.

Selecciono al paciente buscando un codigo en una de las Pestañas Principales. Una vez seleccionado no importa en que PESTAÑA PRINCIPAL me mueva, tengo toda la información de ese paciente seleccionado....
PESTAÑA PRINCIPAL 1 : DATOS GENERALES DEL PACIENTE
PESTAÑA PRINCIPAL 2: HISTORIA CLINICA
PESTAÑA PRINCIPAL _3: DATOS CONTABLES
PESTAÑA PRINCIPAL_4: BUSQUEDA

Ahora bien, de esta forma, yo puedo entrar a Pestaña_2 y a sub_pestaña_2 y veo las Consultas medicas que el paciente ha realizado y colocando en el GRID donde se listan, en el lado derecho veo la informacion y datos de esa consulta. Haciendo dobleClick en la consulta en el GRID puedo pasar esa consulta para que pueda ser modifica, impresa, elminada...etc...

Mientras haga esto asi, todo funciona de maravilla y no tengo problemas con el Mouse para escoger la consulta a EDITAR.

Dentro del form principal hay una mascara que me lista todos los pacientes que estan esperando que les atienda (SALA DE ESPERA). Sencillamente yo veo esa mascara mediante un click al boton VER SALA ESPERA ...este me lista la mascara con todos los pacientes que estan esperando a que les atienda. Si el paciente será atendido por otro medico, ese otro medico solo ve sus pacientes para atencion. La recepcionista puede ver TODOS los PACIENTES de TODOS LOS MEDICOS.

Si yo voy a agregar una CITA medica a un paciente y lo escojo mediante un click en la MASCARA SALA ESPERA, alli es donde viene el problema. Cuando veo las citas anteriores de este paciente y trato de tomar la informacion de una de ellas, el mouse no se posiciona en el GRID de ninguna forma y tengo que llegar al GRID simplemente utilizando las FLECHAS. Como si algo inactivara al Mouse...

Voy a dejar enseguida el codigo del Boton VER SALA DE ESPERA:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
IF Wlevel="3"
**	   THISFORM.MSKSALAESPERA.LBLINCAP.CAPTION=" "
   THISFORM.MSKSALAESPERA.LBLDIAS.CAPTION=""
   THISFORM.MSKSALAESPERA.LBLFECHAI.CAPTION=""
   THISFORM.MSKSALAESPERA.LBLDIAG.CAPTION=""
ENDIF
 
 
THISFORM.MSKSALAESPERA.Visible=.T.
THISFORM.CMDPASARSALA.Enabled=.F.
THISFORM.CMDVERSALA.Enabled=.F.
 
IF wlevel="3"
   thisform.filtrosala1
ELSE
  thisform.filtrosala
ENDIF

El codigo de FILTROSALA Y FILTROSALA1 es para que el GRID que esta en la mascara se llene con los datos del paciente....por ejemplo FILTROSALA es para mis pacientes y las asistentes...y dentro de este solo las asistentes ven todos los pacientes, yo solo veo los mio.

FILTROSALA1 es para el resto de los medicos que ellos solo pueden ver los pacientes asignados a ellos y no tienen en el GRID todos los campos que tengo YO o mis ASISTENTES.

A continuacion el codigo de FILTROSALA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
IF WLEVEL="1"   && NIVEL DE LAS ASISTENTES
  SQLEXEC(LNHANDLE,"SELECT * FROM SALAESPERA WHERE ATENDIDO='NO' ORDER BY MEDCODE,HORA ","_SALA")
ENDIF
 
IF WLEVEL="5"  && NIVEL MIO
   SQLEXEC(LNHANDLE,"SELECT * FROM SALAESPERA WHERE ATENDIDO='NO' AND MEDCODE='G001' ORDER BY MEDCODE,HORA ","_SALA")
ENDIF
 
 
SELECT _SALA
 DO WHILE !EOF()
 
  SQLEXEC(LNHANDLE,"SELECT LASTORDER FROM PATIENT WHERE CODIGO=?_SALA.CODIGO ","_CODIGO")
 
 
  SELECT _SALA
 
  IF _CODIGO.LASTORDER >= DATE()  && ESTE CODIGO ME PERMITE SABER SI EL PACIENTE POR ATENDER YA PAGO LA CONSULTA
      REPLACE _SALA.CONGR WITH "SI"
   ELSE
      REPLACE _SALA.CONGR WITH "NO"
   ENDIF
 
 
 
 
 
 SKIP
 ENDDO
 
Thisform.MSKSALAESPERA.list1.RowSource="codigo,nombre,CONGR,CEDULA,hora,medcode,NUEVO,LASTINV,INCAP,DIAS,FECHAI,DIAG"
 
Thisform.MSKSALAESPERA.list1.requery
Thisform.MSKSALAESPERA.list1.refresh
Cualquier ayuda, estaria agradecido
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

PROBLEMAS AL SELECCIONAR REGISTRO EN UN GRID

Publicado por Fidel José (558 intervenciones) el 11/04/2014 01:25:31
Mira Victor
No se alcanza a comprender a qué te refieres. Tienes un lenguaje extraño, hablas de pestañas donde parece que utilizas un container pero además lo llamas máscara (??), hablas de grid donde en realidad estás utilizando un listbox. La nomenclatura que usas dista absolutamente de lo recomendado.
Esto, por ejemplo, para que todos podamos entender (y VFP también)
thisform.filtrosala1() Si filtroSala es un método del form, debes ponerle los paréntesis.

De todos modos, y referente al listbox, yo acostumbro a redefinir completamente el control:
with Thisform.MSKSALAESPERA.list1
.Clear
.Rowsourcetype=2
.RowSource="_Sala.codigo,nombre,CONGR,CEDULA,hora,medcode,NUEVO,LASTINV,INCAP,DIAS,FECHAI,DIAG"
.BoundColumn=1
.ControlSource="_sala.codigo" && opcional
.Columncounts=12
.ColumnWidths=lcWidths && los anchos de columna que sean
.ColumnLines=.f.
.Requery
.REfresh && esto tiene efecto si usas ControlSource.
endwith
Con clear, te aseguras que la lista sea lo que quieres ver y no más que ello.
No olvides anteponer el nombre del cursor o tabla a la lista de campos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

PROBLEMAS AL SELECCIONAR REGISTRO EN UN GRID

Publicado por VICTOR MANUEL (278 intervenciones) el 11/04/2014 02:11:10
Gracias Fidel por la aclaracion de los terminos. Yo no soy programador de profesion, soy medico.

Ok. Pestañas es lo que son PAGEFRAME (el que me enseño las llamó pestañas)
Mascara es un Container (Contenedor) (El que me enseño lo llama Mascara y asigna como MSKXXXXX al nombre)

Entonces es un Contenedor que tiene un LIST con los pacientes en sala de espera mediante un Filtro llamado FiltroSala()
Pero, el problema es que al escoger el Registro del Contenedor con un doble click sobre el registro...me envia al PageFrame que contiene Antecedentes y Citas Medicas...En Antecedentes puedo editar y grabar sin problemas...pero en Citas Medicas, donde me lista todas las citas que ha tenido el paciente, NO puedo escoger una cita determina con el Mouse....solo se posiciona el cursor si uso las FLECHAS.

El Listbox tal como esta funciona de maravillas (aunque es bueno aprenderlo a que se construya siempre como me dices...esta idea tuya la tome para los GRIDS que son los que se desarman si no lo hago como dices tu).

Si no tomo el paciente a consultar una Cita del Contenedor, no tengo problema para nada...es decir, si edito las CITAS jalando la informacion del paciente desde una Pagina de Busqueda que esta dentro del Formulario.

Por eso digo que algun problema hay con el Evento DobleClick del contenedor.

Ahora practique y construi el Listbox como dices tu, pero al hacerlo, no puedo seleccionar nada con el Mouse ni con las flechas, dentro del contenedor MskSALAESPERA.

Espero tus comentarios

Espero que ahora si me haya dado a entender y muchisimas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

PROBLEMAS AL SELECCIONAR REGISTRO EN UN GRID

Publicado por Fidel José (558 intervenciones) el 11/04/2014 15:55:21
Víctor
Revisa lo siguiente:
1) Que el nombre del cursor (o tabla) asignado al RowSource del control List1 sea el correcto (digo esto porque me parece que yo puse otro)
2) Si en algún momento del código, el Container "mskSalaEspera" o el mskSalaEspera.List1 quedan como Enabled=.F.
3) Revisa el código que tiene "consultar una Cita del Contenedor" (no se como se genera, pero sería importante revisarlo, ya que a partir de ahí se producen los problemas, según entiendo).
4) Fíjate si el enfoque puede caer en un control (textbox, spinner, EditBox) que tenga en su Evento Valid algún código que retenga el enfoque (RETURN 0 ).
5) Busca en todo el formulario si hay redireccionamientos de foco (thisform.talControl.SetFocus).
6) Fijate si en alguna parte se utiliza un control Shape transparente. Algunos programadores utilizan este truco para evitar que se pueda hacer click/dblClick en algunos elementos (list, combobox, etc.).
7) Si el Container mskSalaEspera se desplaza o redimensiona, conviene hacer un thisform.refresh
8) Si todavía no encuentras la falla, habrá que revisar si hay código en algún evento mousemove, mouseEnter o MouseLeave, aunque esto no lo veo razonable pues supongo que tendrías este problema también en otras circunstancias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

PROBLEMAS AL SELECCIONAR REGISTRO EN UN GRID

Publicado por VICTOR MANUEL (278 intervenciones) el 11/04/2014 18:18:59
Hola Fidel;

Bueno, referente a la forma de c onstruir el List, segui tus consejos y encontre el por que no podia selecionar un registro del contenedor MSKSALAESPERA y era por el Control.source que pusiste que era opcional y no lo quite. Al quitarselo, funciona bien y lo que hice fue construir todos los list que uso en el formulario mediante codigo.

No he encontrado ninguno de los errores que pueden explicar el asunto de no poder selecionar con el mouse las citas a ver o editar. La parte de un evento ENABLED no es posible puesto que si puedo acceder a todo mediante el teclado.

He notado, que el problema es cuando se muestra en algun momento el contenedor cuando presiono el boton de VER SALAESPERA.

El codigo para el boton VER SALA ESPERA es el que te mostre anteriormente. Pero no le veo ningun error.

Seguire buscando, porque en algun lado debe estar el problema. He hecho infinidades de pruebas sin DESPLEGAR el contenedor MSKSALAESPERA y todo funciona a la perfeccion.

Saludos y Gracias

[
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

PROBLEMAS AL SELECCIONAR REGISTRO EN UN GRID

Publicado por VICTOR MANUEL (278 intervenciones) el 11/04/2014 19:44:47
hOLA NUEVAMENTE,

Tambien descubri que en el Boton de VER SALA ESPERA , al borrar la linea de comandos que permite hacer visible al contenedor MSKSALAESPERA, todo funciona a la perfeccion.

Revise el codigo del contenedor y no tiene nada en particular asi que no entiendo por que se bloquea el mouse.

Lo unico es que cuando programo como el contenedor me estorba para los otros PAGEFRAME lo que hago es que lo mando para atras "SEND to BACK" y al terminar de programar, "BRING to FRONT"...porque si no lo hago, cuando necesito hacerlo visible no se puede ver.

Saludos nuevamente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

PROBLEMAS AL SELECCIONAR REGISTRO EN UN GRID

Publicado por Fidel José (558 intervenciones) el 11/04/2014 22:47:46
Cuando tengo un container que molesta en el diseño, lo pongo en una posición fuera de la vista y como Visible=.t.
En el init del form, le doy la posicion en que necesito que aparezca (top y left)
Luego, cuando se necesita, .Container1.Visible=.T.
En tiempo de ejecución, el Container queda encima de otros objetos con .Container1.Zorder(0) o debajo con .Container1.Zorder(1)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

PROBLEMAS AL SELECCIONAR REGISTRO EN UN GRID

Publicado por VICTOR MANUEL (278 intervenciones) el 12/04/2014 20:42:05
Hola Fidel,

No he podido encontrar la solucion al problema. Pero, la informacion que me diste sobre como trabajar con los contenedores de manera que no te molesten al programar, es excelente. Asi lo hice, los posicione en una parte donde no me estorben al programar. En el Init del form puse las posiciones de los mismos y luego los hago visible cuando los necesito. Lo unico que me sugiriste que los ponga como VISIBLE .T. y creo que debe ser VISIBLE .F. y pedir que se hagan visibles solo cuando los requiera y los pongo tambien con ZORDER(0).

Se me ocurre, que si tienes tiempo mi correo es vperezr@cableonda.net y si tienes TEAMVIEWER podrias conectarte y te dare acceso a mi computador de manera que puedas exactamente ver mi formulario en ejecucion como si estuvieras frente al mismo.

Saludos y gracias por tu apoyo. Con gente como tú, este foro se hace mas grande.

Victor,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar