Te planteo mi consulta, arme una pequeña aplicación que lo único que hace es consultar una tabla que contiene los internos de una oficina. En un form puse una grid y un textbox en donde se ingresa el nombre. En la grid se van filtrando los usuarios a medida que se completa el nombre en el textbox. Hasta acá todo bien, de hecho la ejecuto desde el entorno de VFP y funciona bien.
El problema lo tengo cuando genero el ejecutable y lo ejecuto, lo que hace es un pantallazo y se cierra, pero queda residente en memoria y la única manera de cerrarlo es a través del administrado de tareas de windows. Leí que se debe tener un programa inicial y que en el mismo debe contener la instrucción read events. Genere un programa inicial que contiene DO FORM nombre (formulario que contiene los objetos antes mencionados) Read events Pero se sigue corportando igual que antes (se abre y cierra de inmediato), el read events, también trate de ponerlo en el evento init del form, pero no hubo caso. Me debe estar faltando algo, pero la verdad no me doy cuenta que puede ser. ¿Tienes idea que estoy haciendo mal?
1 Respuesta
Respuesta
1
1
Anónimo
Te paso los seteos que deberías hacer para armar un ejecutable: (cópialo en el programa de arranque) _screen.visible = .f. _screen.enabled = .f. _screen.windowstate = 2 && maximiza la pantalla del visual (2) _screen.titlebar = 1 && saca la barra de arriba. _screen.maxbutton = .t. _screen.minbutton = .t. _screen.closable = .f. SET DEVICE TO SCREEN SET DATE TO ITALIAN && Acomoda el formato de fecha a DD-MM-AAAA SET CENTURY ON && Acomoda el formato del año a cuatro digitos AAAA SET STATUS OFF && Muestra o quita la barra de estado basada en caracteres SET ECHO OFF && Abre la ventana Seguimiento para la depuración de programas. SET TALK OFF && Determina si Visual FoxPro muestra los resultados de los comandos. SET DELETED ON && Especifica si Visual FoxPro procesará o no los registros marcados SET MOUSE ON && uso del mouse SET REFRESH TO 1,1 && Determina si se puede y con qué frecuencia puede actualizarse SET REPROCESS TO AUTOMATIC && Especifica cuántas veces o durante cuánto tiempo SET MULTILOCKS ON && Impide m£lt. bloq. de reg. varios(pero no todos) SET LOCK OFF && Bloqueo aut. en reports, sums, etc. SET STATUS BAR OFF && Muestra o quita la barra de estado gráfica. SET EXACT OFF && Especifica las reglas que utiliza Visual FoxPro al comparar dos SET NOTIFY OFF _screen.enabled = .t. _screen.visible = .t. set classlib to "aca poné la ruta y el nombre de tu VCX" loPantalla = CREATEOBJECT("aca pone el nombre de tu clase principal") loPantalla.show() Read Events * es importante que en tu clase principal tengas seteadas las propiedades siguientes: ShowWindow = 1 WindowType = 0 *Salu2!
Antes que nada Muchas Gracias por tu pronta respuesta. En el ejemplo que me pasas copie todo en mi programa principal, salvo las lineas: set classlib to "aca poné la ruta y el nombre de tu VCX" loPantalla = CREATEOBJECT("aca pone el nombre de tu clase principal") loPantalla.show() Porque no estoy usando ninguna librería de clases y en lugar de eso hago directamente DO FORM "nombre del formulario principal y en las propiedades del mismo me asegure de ponerle como me indicas ShowWindow = 1 WindowType = 0 Con estos cambios vuelvo a generar mi ejecutable pero sigo con el mismo problema, ¿Tengo si o si que crearme una clase?, disculpa mi ignorancia y una vez más Gracias.
Puede ser que no tome bien las rutas. Te modifiqué para usar el DO FORM y para configurar el directorio default para cuando lo ejecutas de un .EXE : If _vfp.StartMode = 0 And ; Type("_vfp.ActiveProject")=="O" lcDefaultPath = _vfp.ActiveProject.HomeDir Set Path To (Addbs(lcDefaultPath)) Additive Else *-Ejecuta por este camino cuando se trata de un ejecutable lcDefaultPath = Sys(5)+Sys(2003) Set Path To (Addbs(lcDefaultPath)) Additive Endif Set Path To (Addbs(lcDefaultPath)) Additive Set Default To (lcDefaultPath) _screen.visible = .f. _screen.enabled = .f. _screen.windowstate = 2 && maximiza la pantalla del visual (2) _screen.titlebar = 1 && saca la barra de arriba. _screen.maxbutton = .t. _screen.minbutton = .t. _screen.closable = .f. SET ENGINEBEHAVIOR 70 && Habilita la compatibilidad del motor de datos SQL con VFP 6,7,8 SET POINT TO "." && Determina el carácter decimal que se utilizará al mostrar las expresiones numéricas y de moneda. SET DEVICE TO SCREEN SET ANSI ON && Determina cómo se hacen las comparaciones de cadenas de distintas longitudes utilizando el operador = en comandos SQL de Visual FoxPro. SET HELP OFF && Activa o desactiva la Ayuda en pantalla de Visual FoxPro o especifica un archivo de Ayuda. SET HEADING OFF && Determina si se muestran o no encabezados de columna para los campos, y si se incluye información de archivos cuando se ejecuta TYPE para mostrar el contenido de un archivo. SET SCOREBOARD OFF && NO FIGURA EN LA AYUDA SET SAFETY OFF && Determina si Visual FoxPro muestra o no un cuadro de diálogo antes de sobrescribir un archivo existente. SET DATE TO ITALIAN && Acomoda el formato de fecha a DD-MM-AAAA SET CENTURY ON && Acomoda el formato del año a cuatro digitos AAAA SET STATUS OFF && Muestra o quita la barra de estado basada en caracteres SET ECHO OFF && Abre la ventana Seguimiento para la depuración de programas. Se incluye por compatibilidad con versiones anteriores. Utilice la ventana Seguimiento en su lugar. SET TALK OFF && Determina si Visual FoxPro muestra o no los resultados de los comandos. SET DELETED ON && Especifica si Visual FoxPro procesará o no los registros marcados para su eliminación y si estarán disponibles o no para utilizarse en otros comandos SET CONFIRM ON && Especifica si puede salir de un cuadro de texto escribiendo más allá del último carácter del cuadro. SET ESCAPE OFF && Determina si al presionar la tecla ESC se interrumpirá la ejecución de un programa y un comando. SET MOUSE ON && NO FIGURA EN LA AYUDA SET CLOCK OFF && Determina si al presionar la tecla ESC se interrumpirá la ejecución de un programa y un comando. SET HOURS TO 24 && Establece el formato de hora del reloj del sistema en 12 ó 24 horas. SET AUTOSAVE ON && Determina si Visual FoxPro vaciará o no los búferes de datos al disco cuando salga de READ o cuando vuelva a la ventana Comandos SET SYSMENU OFF && Activa o desactiva la barra de menús del sistema de Visual FoxPro durante la ejecución del programa y permite reconfigurarla. SET EXCLUSIVE OFF && Especifica si Visual FoxPro abre los archivos de tabla para uso exclusivo o compartido en una red. SET REFRESH TO 1,1 && Determina si se puede y con qué frecuencia puede actualizarse la ventana Examinar con los cambios que hagan en los registros otros usuarios de la red. SET REPROCESS TO AUTOMATIC && Especifica cuántas veces o durante cuánto tiempo intenta Visual FoxPro bloquear un archivo o un registro después de que fracase un intento de bloqueo. SET MULTILOCKS ON && Impide m£lt. bloq. de reg. varios(pero no todos) SET LOCK OFF && Bloqueo aut. en reports, sums, etc. SET STATUS BAR OFF && Muestra o quita la barra de estado gráfica. SET EXACT OFF && Especifica las reglas que utiliza Visual FoxPro al comparar dos cadenas de diferente longitud. CLOSE DATABASES ALL && Cierra todas las bases de datos abiertas CLOSE TABLES ALL && Cierra todas las tablas abiertas *---------------------------------------------------------------------------------------------------------------- SET NOTIFY OFF WAIT WINDOW 'Espere el sistema se está configurando' NOWAIT *-Esto abre el formulario que pide el nombre y clave del usuario----------------------------------------------- _screen.enabled = .t. _screen.visible = .t. DO FORM FORM1 Read Events *intenta nuevamente y cualquier duda sigo a tu disposición. *Salu2!