COMO SABER SI UN FORM ESTA ABIERTO?

1,975 views
Skip to first unread message

mhlezama

unread,
Feb 2, 2009, 12:43:12 PM2/2/09
to Mundo Visual FoxPro
estoy trabajando en una red. pero necesito saber si un form esta
abierto, como puedo saber?
no quiero que este form se abra dos veces.

gracias

Mario

Jose Oscar Vogel

unread,
Feb 2, 2009, 12:48:46 PM2/2/09
to mundovis...@googlegroups.com
podrias poner en una tabla un campo logico que te indique que lo tienes abierto (pondrias en verdadero en el init del form), cuando sales del form lo pone en falso de esa forma otra estacion puede ingresar.
 
es una de las formas de hacerlo, seguro que existen otras
 
saludos oscar
2009/2/2 mhlezama <mhle...@gmail.com>

Alvaro Torres Tatis

unread,
Feb 2, 2009, 1:39:40 PM2/2/09
to Mundo Visual FoxPro

Marlon Cabrera

unread,
Feb 2, 2009, 2:52:29 PM2/2/09
to mundovis...@googlegroups.com
Si es en dos estaciones distintas la unica forma es metiendolo en una tabla o archivo, todos los otros comandas de VFP trabajan por sesión, inclusive en la misma estación si ejecutas dos veces el EXE cada exe se ejecuta por aparte así que aunque abras en uno y otro el formulario la aplicación siempre te dira que hay uno. 
 
Ahora bien existen formas más complicadas de hacer eso con COM y otras cosas, pero para mi lo más fácil es una tabla :-)

eduardo_petronzi

unread,
Feb 3, 2009, 10:26:13 AM2/3/09
to Mundo Visual FoxPro
La funcion wexist() solo dice si el form existe o no (si mi memoria no
falla) ....
Y el problema de usar una tabla con un campo lógico que 'avise' es que
si por alguun motivo se sale del form por metodos 'no convencionales'
(por ejemplo si se apaga la maquina) quedaría cargada la tabla
como .t. y nadie podria entrar a no ser que se 'limpie' la tabla
Pero parece ser lo mas sensato a no ser que uses una appi
FindWindow ... Revisa la función _findwindowsp() que probablemente te
ayude
Saludos
Eduardo

Yvan GMAIL

unread,
Feb 3, 2009, 10:37:01 AM2/3/09
to mundovis...@googlegroups.com
Según tengo entendido lo que tu deseas es que un mismo form no pueda ser
abierto por otro usuario en otra PC. y no es la misma PC correcto.??

Como decía el amigo eduardo el wexist solo buscaría en la aplicación
abierta.. pero si abres otro exe ya no funcionaria.. pero si usas
find-Windows.. si te ayudaría.. ahora.. mi aporte es en caso quieras validar
que no abran el mismo form pero en otra PC.

Alguna vez hice una validación parecida. Mi lógica era:

1. Cada vez que uses el Form se creaba un archivo en el servidor... ejem
formx.log, esto lo creaba con el fopen.. pero no lo cerraba si no hasta que
el usuario cerrara el formulario..(a) ahora el tema es que tal si apagó a
la mala la PC.. el archivo formx.log todavía existiría...

2. Cuando un usuario quería abrir el formulario primero.. el programa
buscaba que el archivo formx.log, pero si ya existía no dejaba abrirlo..
ahora tomando el caso (a)... antes de preguntar si existía.. intentaba
borrar el formx.log .. si la PC que la creó se cerró a la mala... si podría
borrar el archivo.. ya que no estaría en uso.. pero si alguien lo estaba
usando.. el vfox arrojaría el error. no se puede eliminar.. archivo en
uso..(obviamente este error era controlado).. así yo solo emitía. el
mensaje.. "formulario en uso o etc."

Espero haberme dejado entender en el punto 2. Me imagino que debe otra
solución menos tediosa.. pero es mi humilde aporte.


Yvan Carranza
http://groups.google.com.pe/group/mundovisualfoxpro
Reply all
Reply to author
Forward
0 new messages