Formulario sin ventana principal de VFP9 (in desktop)

3,185 views
Skip to first unread message

Juan Pablo Carrasco M.

unread,
Jun 4, 2013, 4:46:03 PM6/4/13
to publice...@googlegroups.com
Estimados,

Una vez mas recurro a ustedes para resolver un inconveniente.

Necesito realizar un formulario que luego de ser validado segun password, pase a otro formulario sin la ventana principal de VFP9

La idea es dejar solo al formulario como principal, probe con ShowWindows=2 - Como formulario de nivel superior, pero aunque puedo mover mi formulario fuera de la pantalla de VFP9 al escritorio, lo que quiero es verlo solo sin depender de la pantalla principal.

Con FPW 2.6, me acuerdo que era algo como: MODIFIC WINDOWS IN DESKTOP, pero no recuerdo mas. ¿Alguien me puede ayudar con esto?.

Muchas gracias....

Luis Maria Guayan

unread,
Jun 4, 2013, 4:48:20 PM6/4/13
to publice...@googlegroups.com
Debes ocultar la pantalla principal de VFP, ya sea con _Screen.Visible = .F. o a partir del archivo de configuración Config.fpw con la línea SCREEN=OFF

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Juan Pablo Carrasco M.

unread,
Jun 4, 2013, 6:15:59 PM6/4/13
to publice...@googlegroups.com
Don Luis,

Ok, pero yo soy un enemigo de tocar el archivo CONFIG.FPW, porque usted sabe que a la hora de volver las cosas a la normalidad debe probar uno por uno los ajustes.

Haber le explico un poco mejor:

Tengo un formulario de validacion; usuario / password

IF ValidaUsuaro()
   DO FORM principal
   READ EVENTS
ENDIF

De ser valido los datos, pasa a mi formulario principal

MI pregunta es:
¿Donde debo insertar la instruccion _Screen.Visible = .F para que ambos formularios queden IN DESKTOP?.

La instruccion que usted me indica, por lo que deduzco, deberia ir en mi programa de inicio (o formularios), en una una funcion parecida a:

IN SCREEN.
       ._ScreenVisible=.f.
       .
       .

¿Verdad?, pero lo pido un poco mas especifico para que despues de ejecutar en modo interprete, no tenga que empezar paso por paso a restaurar la pantalla principal de VFP9.

Muchas gracias.

Antonio.xt

unread,
Jun 4, 2013, 6:36:38 PM6/4/13
to publice...@googlegroups.com

Deberias usar el metodo que te indica el master Luis Ma, creo que es mejor usar el archivo CONFIG.FPW con la linea SCREEN=OFF, asi no tienes que hacer ajustes para volver las cosas a la normalidad.

Si en tiempo de diseño usas _SCREEN:Visible=.F. y tuvieras un error vas a batallar para restablecer la pantalla debido a que no estara visible, y con SCREEN=OFF en el archivo CONFIG no se ocultara, ya que en tiempo de diseño si se vera la ventana principal, pero al correr el ejecutable no se vera, que es tal como lo necesitas.

Saludos, y no le tengas miedo al CONFIG...

Luis Maria Guayan

unread,
Jun 4, 2013, 6:48:19 PM6/4/13
to publice...@googlegroups.com
Como te indica Antonio también, la mejor opción es el archivo de configuración Config.fpw que lo puedes tener en cualquier carpeta, pero si incluído en tu proyecto, para cuando generes el EXE quede incluído en él y no te afectará tu entorno de desarrollo


Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Juan Pablo Carrasco M.

unread,
Jun 5, 2013, 10:25:28 AM6/5/13
to publice...@googlegroups.com
Don Luis,

Al igual que Antonio, yo se que usted es el master.

Lo que pasa, es que el .EXE, lo debo dejar en un directorio comun en donde existen mas aplicaciones desarrolladas en VFP9, y si yo creo el Config.fpw en esa ubicacion, todas estas aplicaciones se veran afectadas por la(s) configuracion(es) contenidas en el archivo, de ahi mi problema.

¿Existe otra posibilidad para lograr lo que busco?
¿Puedo limitar dicha opcion a solo mi aplicacion?
¿Existe algo asi como; WITH thisform.+funcion?

Muchas gracias por vuestro tiempo y atencion.

Ricardo Pina

unread,
Jun 5, 2013, 10:31:23 AM6/5/13
to Grupo VFP
Hola Juan Pablo
 
Lo que te dicen es que si incluyes el config.fpw en el proyecto y generás el .EXE ya queda incluido y no es necesario`poner el archivo config.fpw en el directorio donde estén las aplicaciones.
 
Saludos
 
--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 

Juan Pablo Carrasco M.

unread,
Jun 5, 2013, 11:19:42 AM6/5/13
to publice...@googlegroups.com
Ricardo,

Cree el config.fpw en el directorio del proyecto y ahora no levanta, osea que le doy doble clck y no se ejecuta.

Luego lo inclui en el proyecto y lo mismo.

¿Que puedo hacer ahora?
¿Debo configurar algo mas en el programa de inicio o en los forms o en el proyecto?

Gracias.

Ricardo Pina

unread,
Jun 5, 2013, 11:47:50 AM6/5/13
to Grupo VFP
No entiendo, que no se ejecuta ?
 
 

Juan Pablo Carrasco M.

unread,
Jun 5, 2013, 11:56:32 AM6/5/13
to publice...@googlegroups.com
Genere el [proyecto].EXE (con el config.fpw en directorio e incluido en el proyecto), y al darle doble click no se ejecuta, osea no se ve nada en pantalla.

Lo ejecuto en el entorno de desarrollo y no tengo problemas, el problema es cuando ejecuto el [proyecto].EXE

¿Ahora me entiendes?

Gracias

Ricardo Pina

unread,
Jun 5, 2013, 12:04:13 PM6/5/13
to Grupo VFP
Ahora si
Si pusiste en el config.fpw la línea SCREEN=OFF
El formulario principal de tu aplicación debe ser showwindoes=2 && Como formulario de nivel superior y si tienes un formulario de password anterior también debe serlo.

 

Juan Pablo Carrasco M.

unread,
Jun 5, 2013, 12:23:23 PM6/5/13
to publice...@googlegroups.com
Te comento que a los 2 formularios (ValidaUsuario y MuestraDatos), los deje con la propiedad ShowWindow=2 (Como formulario de nivel superior) como indicaste, con los siguientes resultados:

Al ejecutarlo en el entorno de desarrollo, ejecuto el programa inicio.prg y se visualiza la pantalla ValidaUsuario. Una vez validado los datos desaparece y la pantalla MuestraDatos nunca mas se vio, osea no levanta (no la muestra en pantalla).

Al ejecutar el [proyecto].EXE, muestra por medio segundo el marco de VFP9 y desaparece, osea no se ve nada en pantalla.

¿Algun otro consejo?

Gracias.



Ricardo Pina

unread,
Jun 5, 2013, 12:36:50 PM6/5/13
to Grupo VFP
Por lo que dices me imagino que el tema es otro.
donde tienes las sentencias de READ EVENT y CLEAR EVENT

Misael Rocha P

unread,
Jun 5, 2013, 12:42:55 PM6/5/13
to publice...@googlegroups.com
Buenos días, yo lo hago de la siguiente manera en un programa como principal
pongo varias cosas pero lo que te interésa es
 
SET DEFAULT TO (ruta)
HIDE WINDOWS SCREEN
_SCREEN.WindowState = 1

do form (ruta\formulario.scx)
READ EVENTS

 

ejemplo

SET DEFAULT TO C:\SISTEMA

 

HIDE WINDOWS SCREEN
_SCREEN.WindowState = 1

do form formularios\scx_menu.scx
READ EVENTS

el formulario que abra será donde valides al usuario para accesar a tu sistema o denegarle el acceso

Espero sea lo que necesitas
 
saludos.

Misael Rocha P

unread,
Jun 5, 2013, 12:45:27 PM6/5/13
to publice...@googlegroups.com
se me paso comentarte que el formulario debe de tener las siguientes propiedades
 
Desktop = .T.
ShowWindow = 2
 
Saludos.

Ricardo Pina

unread,
Jun 5, 2013, 12:52:11 PM6/5/13
to Grupo VFP
Hola Misael
 
La propiedad Desktop no se tiene en cuenta en los formularios de Nivel superior.
Juan Pablo dice que tiene ambos formularios en Nivel Superior
Me inclino a pensar que no tiene bien la sentencia read event
 
Saludos
 

Juan Pablo Carrasco M.

unread,
Jun 5, 2013, 1:06:26 PM6/5/13
to publice...@googlegroups.com
Estimados,

Este es el codigo donde activo las pantallas:

pase=.f.  && variable publica que retorna si el usuario/contraseña son validos
DO FORM ValidaUsuario  && pantalla donde valido el usuario/contraseña

IF pase=.t. && el usuario/contraseña son validos
    DO FORM MuestraDatos && pantalla donde accedo a los datos
    READ events
ELSE
    QUIT
ENDIF

Si, creo que READ EVENTS debe provocar la inestabilidad, pues en usando el depurador no entra al ciclo IF y pasa de largo. Por favor un buen consejo.

Muchas gracias

Antonio.xt

unread,
Jun 5, 2013, 1:14:51 PM6/5/13
to publice...@googlegroups.com

Yo tengo un proyecto asi, y las caracteristicas son las siguientes:

Formulario para validar el usuario:
ShowWindow = 2
WindowType = 1

Formulario para mostrar datos:
ShowWindow = 2
WindowType = 0 (este no lo cambie, por default toma este valor)

Y en el PRG principal tengo este codigo:
DO FORM FORMS\Acceso
READ EVENTS

IF NOT lAccesa THEN
   RETURN
ENDIF

DO FORM FORMS\PRINCIPAL
READ EVENTS

Y con esto funciona bien sin mostrar el _SCREEN.

Ricardo Pina

unread,
Jun 5, 2013, 1:17:58 PM6/5/13
to Grupo VFP
para no cambiar mucho, te faltaría un read event en el formulario de validación de password
 
 
 

Luis Maria Guayan

unread,
Jun 5, 2013, 1:19:15 PM6/5/13
to publice...@googlegroups.com
Si solo el formulario de inicio es de nivel superior, luego de la validación de usuario y contraseña debes hacer visible la pantalla de VFP con:

_Screen.Visible = .T.

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Juan Pablo Carrasco M.

unread,
Jun 5, 2013, 1:41:27 PM6/5/13
to publice...@googlegroups.com
Estimados,

Probe con el siguiente codigo enviado

DO FORM ValidaUsuario
READ EVENTS

IF NOT pase THEN
   RETURN
ENDIF

DO FORM MuestraDatos
READ EVENTS

Pero en el ejecutable solo muestra la pantalla ValidaUsuario
En ambiente desarrollo solo muestra la pantalla ValidaUsuario
Usando el depurador muestra que queda pegado en el primer READ EVENTS despues de (DO FORM ValidaUsuario)

¿Alguna otra alternativa?

Gracias

Ricardo Pina

unread,
Jun 5, 2013, 1:47:00 PM6/5/13
to Grupo VFP
CLEAR EVENT en el unload() del formulario

Misael Rocha P

unread,
Jun 5, 2013, 1:47:53 PM6/5/13
to publice...@googlegroups.com
ammm... si mal no recuerdo alguna vez me paso algo similar, lo mas
practico para mi en ese momento fue volver a estructurar el proyecto
jejeje

Sr. Ricardo, gracias por la aclaración tiene razón: Se pasará por
alto la propiedad Desktop si la propiedad ShowWindow está establecida
en 2 - Como formulario de nivel superior.

otra idea mm...

en tu programa principal, desconozco que tengas pero ademas de los SET
pondria esto: (a mi me funciona)

HIDE WINDOWS SCREEN
_SCREEN.WindowState = 1
PUBLIC cDbfs, cFrms, cPrgs, uni, cami, cRuta,
cDbfs = 'bdatos'
cFrms = 'formularios'
cPrgs = 'prgs'
uni = SYS(5)
cami= uni + "\sistema\" &&ruta de la carpeta de tu proyecto en este
caso c:\sistema

cRuta = cami
SET DEFAULT TO (cRuta)
SET PATH TO cDbfs, cFrms, cPrgs, uni, cami, cRuta,
OPEN DATABASE cRuta+cDbfs+"\bdatos_dbc.dbc" SHARED
Do form cFrms+"\acceso.scx"

READ EVENTS

en tu formulario de nivel superior llamas la tabla de tus usuarios
un combobox con los usuarios, texbox (txtPassword) y un botón

en el evento click del botón

If !Empty(dbf_usuarios.pswd)
If AllTrim(dbf_usuarios.pswd) # AllTrim(ThisForm.txtPassword.Value) then

messagebox("Contraseña invalida",0+16,"¡Atención",500)
RETURN

else

Do form cFrms+"\tuotroformulario.scx"
endif
ENDIF




ya luego puedes hacer un contador para que no excedan mas de 3
intentos para accesar


no se si sea lo que tu busques...

saludos.




El día 5 de junio de 2013 12:06, Juan Pablo Carrasco M.
<jpcarr...@hotmail.com> escribió:

Antonio.xt

unread,
Jun 5, 2013, 2:09:12 PM6/5/13
to publice...@googlegroups.com

Imagino que en el formulario ValidaUsuario hay algun CLEAR EVENTS, y en el formulario MuestraDatos tambien. Ademas, el CONFIG.FPW lo incluiste en el Administrador de Proyectos en Text Files en la pestaña Other con la linea _SCREEN=OFF, y este solo funcionara cuando ejecutes el EXE.

Juan Pablo Carrasco M.

unread,
Jun 5, 2013, 3:35:34 PM6/5/13
to publice...@googlegroups.com
¡Grande estimados!,

Todo bien, el ejecutable y en ambiente desarrollo todo ¡excelente!....

  • En el evento UnLoad de los Forms le asigne CLEAR EVENTS
  • El archivo Config.FPW fue agregado a proyecto especifico
  • La instruccion HIDE WINDOWS SCREEN sirve en modo interprete

Muchas gracias amigos por compartir vuestros avanzados conocimientos.


Ryner X

unread,
Nov 21, 2013, 10:13:06 AM11/21/13
to publice...@googlegroups.com
Excelente hermano te agradezco es justo lo que estaba buscando Saludos!!!

HernanCano

unread,
Nov 21, 2013, 9:12:28 PM11/21/13
to publice...@googlegroups.com
Qué bien, Juan Pablo.

Ayúdame con algo: ¿que significa "La instrucción HIDE WINDOWS SCREEN sirve en modo intérprete"?
Reply all
Reply to author
Forward
0 new messages