FoxPro/Visual FoxPro - cerrar sistema

 
Vista:
sin imagen de perfil
Val: 23
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

cerrar sistema

Publicado por noe velazquez (46 intervenciones) el 05/05/2017 23:12:09
Hola Foro !!!
esperando me puedan ayudar, con lo siguiente

tengo un formulario donde el usuario introducirá su nombre y su clave, dependiendo del nombre y la clave ejecutara otro sistema en diferente carpeta la programacion que les muestro abaja si lo hace, pero el sistema que esta en la carpeta que se llama "PRINCIPAL" donde esta el formulario de entrada de nombre y clave no se cierra alguna idea?


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Locate For nombre=Allt(Thisform.usu.Value) And clave=Allt(Thisform.cve.Value)
If Found()
    Cd c:\disper
    #define SW_SHOW_HIDDEN 0
    #define SW_SHOW_NORMAL 1
    #define SW_SHOW_MINIMIZED 2  
    #define SW_SHOW_MAXIMIZED 3
    oShell = CreateObject("WScript.Shell")
    oShell.Run("c:\disper\disper.EXE",0,.T.)
    Thisform.Release
    Clear Events
    Quit
Else
    =Messagebox("NOMBRE DEL USUARIO O CONTRASEÑA INCORRECTA, ESCRIBALO DE NUEVO",16,"Administrador")
    Thisform.usu.Value=' '
    Thisform.cve.Value=' '
    Thisform.usu.Setfocus
EndIf
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
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

cerrar sistema

Publicado por Fidel José (657 intervenciones) el 06/05/2017 17:06:13
Hola Noe
Tienes que pensar el problema para resolverlo en el main prg del primer programa.
Te envío un ejemplo que es igual al tuyo. Se trata de un programita para llamar o actualizar otros programas. Pero de hecho, termina haciendo lo mismo Llama a otro programa y se cierra.
Dejando de lado los elementos que usa (librerías , etc) fijate como se estructura con ON SHUTDOWN y donde van los QUIT.
Y lo que hace el programa que llama ON SHUTDOWN.

En este caso uso un formulario de nivel superior y otro apareciendo dentro de ese. Lo que se necesita es que haya un formulario de nivel superior para que pueda mostrarse.
Por ahí es más sencillo trabajar con formularios de clase (para trabajarlos como objeto). Pero también se puede apelar a la cláusula NAME sobre una propiedad de Screen o una variable pública.
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
sin imagen de perfil
Val: 23
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

cerrar sistema

Publicado por Noé Velazquez (46 intervenciones) el 09/05/2017 00:25:05
Hola Fidel José buenas tardes.....

la verdad me da mucha pena pedirte ayuda viendo tu programa main.prg se nota que tienes mucho mas conocimiento que yo, lo que he programado a comparación tuya es muy básico yo creo mis formularios con el ayudante arrastro los objetos que necesito y ya. no se que es un formulario de nivel superior y creo que ahí esta el problema por que tu todo lo haces en tu programa MAIN.prg veo que con esta lineas se crea el formulario a continuación se ejecuta DO MYQUIT

1
2
3
4
5
6
ADDPROPERTY(_screen,"nProgram",0)
ADDPROPERTY(_screen,"frmMain",NEWOBJECT("frm_main","myclass.vcx"))
loFso=NEWOBJECT("Scripting.FilesystemObject")
 
 
ON SHUTDOWN do MyQuit

y dentro del procedure se ejecuta esto

1
2
3
4
5
_screen.frmMain = null
CLEAR ALL
CLEAR EVENTS
ON SHUTDOWN
QUIT

yo tengo un formulario y en un botón donde busca al usuario y su clave tengo esto

1
2
3
4
#define SW_SHOW_HIDDEN 0
oShell = CreateObject("WScript.Shell")
oShell.Run("c:\disper\disper.EXE",Sw_Show_hidden,.T.)
ON SHUTDOWN Do myquit

y en mi programa principal que esta como SET MAIN tengo esto
1
2
3
4
5
Procedure myquit
  Clear Events
  On Shutdown
  Quit
Return

me podrías dar otra ayudadita......
te estaría inmensamente agradecido
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
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

cerrar sistema

Publicado por Fidel José (657 intervenciones) el 09/05/2017 01:45:21
Hola Noé:
Lo primero que hay que tener en cuenta es cómo se puede estructurar un main.prg.
1) configuración básica del sisterma (donde van todos los SET necesarios)
2) Configurar qué pasa cuando se ejecuta un QUIT o se sale del sistema de alguna forma (ON SHUTDOWN)
3) Cargar la interfaz de usuario (DO FORM Tal_form, o crear un form de clase como objeto oo = newobject(etc ) )
4) Iniciar el bucle de eventos (READ EVENT)

Abajo de esto, que más o menos es así, dependiendo de otras cosas que se necesiten controlar.
PROCEDURE MyQuit
CLOSE DATABASES ALL
CLEAR EVENTS && CIERRA EL BUCLE DE EVENTOS
ON SHUTDOWN && cancela
CLEAR ALL
QUIT
ENDPROC

Ahora bien, dónde se ejecuta el QUIT para que el sistema se cierre?
Depende de como programes. Si tu formulario es WindowType = 1 y se muestra sobre el _screen de VFP, lo mejor es colocar un QUIT en el Unload de ese formulario. También lo puedes colocar exactamente debajo de la línea donde se lo llama, siempre que se lo llame con DO FORM.
En cambio, si es un formulario de clase, no se puede hacer de ese modo, porque el formulario de clase tomará su WindowType dependiendo de como se muestre (Show() o Show(1). Por lo tanto, primero habrá que llamar al método Show() del form de clase y luego puede ir el famoso QUIT. Al encontrar este comando, VFP ejecuta lo que diga ON SHUTDOWN.

En el formulario, no tiene que haber ningun ON SHUTDOWN, ni CLEAR EVENTS, ni READ EVENTS. Salvo casos muy especiales que lo justifiquen READ EVENTS Y CLEAR EVENTS van una sola vez en todo el sistema. Indican el inicio y el final del bucle de eventos.

Te recomiendo este artículo del excelente Fernando D. Bozzo.
https://fdbozzo.blogspot.com.ar/2014/01/crear-un-proyecto-foxpro-por-donde.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 23
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

cerrar sistema

Publicado por Noé Velazquez (46 intervenciones) el 09/05/2017 23:02:09
Hola Fidel José !!!

asi tengo mi inicio.prg que esta como SET MAIN

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Set Exclusive off
Set Deleted on
Set Multilock on
Set Safety off
Set Century on
Set Date to french
Set Status bar off
Set Sysmenu to
Set Talk off
Set Scoreboard off
Set Exact on
Set Console Off
*
on shutdown do proc_exit
on error do proc_error with error(), message(), message(1), program(), lineno()
*-----------------------------------------------------------
With _screen
   .picture = "fondo_gris.bmp"
   .windowstate = 2
   .caption     = "   Formulario de Entrada Principal   "
   .closable    = .f.
   .controlbox  = .t.
   .maxbutton   = .t.
   .minbutton   = .t.
   .movable     = .t.
Endwith
 
Do Form entrada
Read Events
*----------------------------------------------------------
_screen.Closable = .t.
_screen.MaxButton = .t.
_screen.MinButton = .t.
*
set sysmenu to default
set sysmenu on
set exact off
set century off
set deleted off
set datasession to
close tables all
close databases all
 
on shutdown
on error
 
set talk on
set safety on
return
 
procedure proc_exit
	set datasession to
	quit
return
 
procedure proc_error
parameter nError, cError, cLinea, cPrograma, nLinea
=messagebox("Error: " + LTRIM(STR(nError)) + chr(13) + ;
	"Mensaje de error: " + alltrim(cError) + chr(13) + ;
	'Línea de código con error: ' + cLinea + chr(13) + ;
	'Número de línea del error: ' + LTRIM(STR(nLinea)) + chr(13) + ;
	'Programa con error: ' + cPrograma, 64, "Error")
	 return to master
return
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 23
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

cerrar sistema

Publicado por Noé Velazquez (46 intervenciones) el 09/05/2017 23:44:00
Wowwwwww.

Gracias Fidel José lo pude lograr gracias a tu conocimiento, a tu tiempo y tu paciencia


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