FoxPro/Visual FoxPro - formulario ya abierto

   
Vista:

formulario ya abierto

Publicado por pepe (11 intervenciones) el 23/02/2010 23:33:16
Hola amigos:
¿Me podeis indicar, como puedo impedir que un formulario que ya tengo abierto se abra otra vez?
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

RE:formulario ya abierto

Publicado por es_binario (757 intervenciones) el 24/02/2010 03:52:46
Yo no he encontrado el contructor de una clase formulario, para usar un patron del diseño que precisamente no permite que se instancie una clase mas de una vez. asi que uso una solucion mas bien ingeniosa y no tanto profesional.

En el ejecutable principal declaro una variable de tipo publica y del tipo boolean para cada form que contenga mi aplicacion.

public entornoNadro as Boolean
*// luego le doy valor falso
entornoNadro = .F.

ahora en el menu en vez de llamar a la aplicacion llamo un programa que verifica si la variable es falsa o verdadera si es verdadera me manda un mensage diciendome que ya se encuentra abierto el form si es falsa lo abre.

IF entornoNadro = .T.
*// SELECT nadro_art
DO FORM 'c:\Farmaciai\forms\nadro'
RETURN
ELSE
MESSAGEBOX('El formulario esta Activo',64,'')
RETURN
ENDIF

y en el formulario en el init tengo la misma variable como verdadera

entornoNadro = .T.

y en el destroy del mismo tengo

entornoNadro = .F.

Esto me funciona bastante bien aunque es algo laborioso.
creo que se puede crear una funcion para cargar los formularios a partir de una matriz y asi llamar todos a travez de una funcion, pero no he tenido tiempo de hacerlo, si lo haces compartes.

saludos.
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

RE:formulario ya abierto

Publicado por es_binario (757 intervenciones) el 24/02/2010 03:52:51
Yo no he encontrado el contructor de una clase formulario, para usar un patron del diseño que precisamente no permite que se instancie una clase mas de una vez. asi que uso una solucion mas bien ingeniosa y no tanto profesional.

En el ejecutable principal declaro una variable de tipo publica y del tipo boolean para cada form que contenga mi aplicacion.

public entornoNadro as Boolean
*// luego le doy valor falso
entornoNadro = .F.

ahora en el menu en vez de llamar a la aplicacion llamo un programa que verifica si la variable es falsa o verdadera si es verdadera me manda un mensage diciendome que ya se encuentra abierto el form si es falsa lo abre.

IF entornoNadro = .T.
*// SELECT nadro_art
DO FORM 'c:\Farmaciai\forms\nadro'
RETURN
ELSE
MESSAGEBOX('El formulario esta Activo',64,'')
RETURN
ENDIF

y en el formulario en el init tengo la misma variable como verdadera

entornoNadro = .T.

y en el destroy del mismo tengo

entornoNadro = .F.

Esto me funciona bastante bien aunque es algo laborioso.
creo que se puede crear una funcion para cargar los formularios a partir de una matriz y asi llamar todos a travez de una funcion, pero no he tenido tiempo de hacerlo, si lo haces compartes.

saludos.
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

RE:formulario ya abierto

Publicado por pepe (11 intervenciones) el 24/02/2010 13:47:43
Muchas gracias, es_binario, me quedo con tu soluccion que es estupenda, siento no poder hacer lo de la matriz pero mis conocimientos en programacion son muy limitados, aunque gracias a vuestra ayuda consigo unos resultados fabulosos. Quizas algún dia yo tambien pueda colaborar .
Gracias a todos.
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

formulario ya abierto

Publicado por Mauricio (42 intervenciones) el 24/02/2010 14:47:54
cheque esta direccion:
http://www.portalfox.com/index.php?name=News&file=article&sid=2072
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