Cómo crear y utilizar programas .prg en vfp
Este es el formato recomendado para principiantes. No es necesariamente el mejor, pero en realidad es factible
* Nombre del programa: main.prg
. p>* Función: Entrada a todo el sistema
* Ruta: \ su directorio de programas \ prgs
Desactivar Talk
Desactivar Escap
p>
* Inicio, manejo de errores del programa
ON ERROR DO Err.PRG With Error(), Message(), Message(1), Program(), Lineno( 1)
* El primer paso es limpiar el medio ambiente***** *******************
*******
Cerrar todo y cerrar todas las bases de datos, tablas e índices abiertos en el espacio de trabajo y seleccione el espacio de trabajo 1.
Borrar menús y libera todas las variables y matrices de memoria de la memoria, así como todas las barras de menú,
menús y definiciones de ventanas definidas por el usuario. Todas las bibliotecas externas de enlaces dinámicos de Windows de 32 bits (.DLLS) registradas con DECLARE-ALL también se eliminarán de la memoria
amp;amp;.
* Cierra el menú del sistema p >
* Si modificó el sistema de menús después de ejecutar el comando SET SYSMENU SAVE, puede restaurar la configuración anterior emitiendo el comando
* SET SYSMENU TO DEFAULT.
Establecer guardar menú del sistema
* Descarta la barra de menú principal de Visual FoxPro durante la ejecución del programa.
Establecer Sysmenu Off
Establecer Sysmenu To
* Paso 2, configure el entorno
* Guarde el búfer de datos al salir de lectura Contenido de
Activar Autoguardado
* Al crear un nuevo registro usando los comandos INSERTAR, APLICAR y EXAMINAR, los datos del registro actual no se copian en el nuevo registro.
Establecer transferencia
* Especifica si se puede salir del cuadro de texto escribiendo el último carácter del cuadro de texto.
Desactivar confirmación
* No mostrar la parte del siglo de la fecha
Desactivar siglo
* Establecer el formato de fecha en "AAAA. MM.DD "Formato
Establecer fecha Ansi
* No mostrar registros eliminados
Establecer eliminación en
* Determinar si es posible, utilice LOCK ( ) o RLOCK ( ) para bloquear varios registros.
Establecer bloqueos múltiples activados y específicos de programación de red
* Determina cómo los comandos ATLTER TABLE, CREATE TABLE e INSERT-SQL manejan los valores nulos.
Establecer nulo en
* El texto que se muestra cuando el campo especificado es nulo (NUll) es
Establecer NullDisplay en ''
* No mostrar el cuadro de diálogo antes de sobrescribir el archivo existente
Desactivar seguridad
* Eliminar la barra de estado de los gráficos.
Desactivar la barra de estado
* Paso 3: Establecer la ruta del programa
* Establecer el directorio de inicio del programa
GcMainPath público
p >
gcMainPath = Sys(5) Sys(2003) "\"
Establecer como valor predeterminado amp;gcMainPath
* Directorio de datos (base de datos local y tabla)
gcDataPath público
gcDataPath = gcMainPath "Data\"
* Directorio de programas
gcPrgsPath público
gcPrgsPath = gcMainPath " Prgs \"
* Directorio de imágenes
gcPicsPath público
gcPicsPath = gcMainPath "pics\"
* Directorio de tablas<
gcFormsPath público
gcFormsPath = gcMainPath "forms\"
* Directorio de menú
gcMenusPath público
gcMenusPath = gcMainPath " menus \"
* Directorio de etiquetas
gcLabelsPath público
gcLabelsPath = gcMainPath "labels\
* Directorio de informes
Public gcReportsPath
gcReportsPath = gcMainPath "Reports\"
* Paso 4: Inicializar el teclado
Capslock(.F.)
IMEStatus(0)
Insmode(.T.)
Numlock(. p>
* Paso 5 Abra la biblioteca de clases personalizada y procese el archivo
p>Establecer Classlib en gcMainPath "vcx\MyVCX.vcx"
Establecer procedimiento en gcPrgsPath "Myproc.
* Configurar para no mostrar el cuadro de diálogo de inicio de sesión ODBC
SQLSETPROP(0, "DispLogin", 3) & network
* Paso 6 declarar otras variables globales
* Nombre de la fuente de datos
GcDSN público
gcDSN = ' '
* Nombre de inicio de sesión del usuario
gcUID público
gcUID = ''
* Contraseña de inicio de sesión del usuario
Public gcPWD
gcPWD= ''
* Nombre de usuario actualmente conectado (chino)
PUBLIC gcName
gcName=''
* Nombres de bases de datos front-end y back-end
gcSQLDatabase pública, gcFoxDatabase
gcSQLDatabase = ' Amp de gestión de perfiles; datos SQL de backend
Biblioteca
gcFoxDatabase = 'Administración de perfiles' y base de datos VFP de front-end
* Controlador de conexión
GnHandleMaster público y controlador de conexión de base de datos principal del sistema back-end
gnHandleMaster = 0
Público gnHandleUser amp El identificador de conexión de la base de datos del usuario back-end "gcSQLDatabase"
gnHandleUser = 0
* Paso 7: Verifique la cuenta de inicio de sesión
gt; * Llame al formulario de inicio de sesión "gcSQLDatabase". * Llame al formulario de inicio de sesión "login.scx"
Haga el formulario gcFormsPath "login.scx" para gnHandleUser
El resultado es como se muestra a continuación
* Si el el inicio de sesión fue exitoso, gnHandleUser gt; 0 significa que el inicio de sesión fue exitoso y viceversa. p>Si gnHandleUser lt;= 0 &El inicio de sesión falló
Salir y salir
Endif
* Especifica ejecutar cuando se intenta salir de VFP El programa
AL APAGAR, HAGA gcPrgsPath "FileExit.prg" y el código es el siguiente.
* Paso 8, llama al menú principal del programa
Haz gcMenusPath "mainmenu.mpr"
* Paso 9, muestra la portada y el escritorio del programa
Forme gcFormsPath "title.scx" y portada
Forme gcFormsPath "Desktop.scx" y escritorio, este es el fondo del programa (imagen omitida)
* Paso 10, abra o cree una base de datos local
cFoxDb=gcDataPath gcFoxDatabase ".dbc"
If Not Files(cFoxDb) amp;amp; no existe
Crear base de datos & cFoxDb & Crearla
Endif
* Iniciar procesamiento de eventos
Leer eventos
Leer eventos
* liberará la base de datos local.
p>
* Liberará el comando ON SHUTDOWN actual
ON SHUTDOWN
* Programa: FileExit
* Función: Resolver el problema del programa en ejecución Luego haga clic en el botón de cierre de la ventana principal [X] y no puede salir de VFP
If Messagebox('¿Realmente desea salir de este sistema?', 4 32 256, 'Confirmación de salida')lt ;gt; 6 AND gnHandleUser gt;
Regresar
Endif
*Hacer mientras Txnlevel()gt 0
*Revertir;
*Enddo
Borrar eventos
ON APAGADO
*Restaurar entorno
Establecer el menú del sistema como predeterminado p>
Con _Screen
.WindowState=2 amp;amp; maximizar
.p>.BackColor=Rgb(255, 255, 255)
.Caption ="Microsoft Visual FoxPro"
.Icon =''.
Fin con
* Cierra la base de datos y la tabla
Si se usa(" cfg ")
Usar en cfg
Endif
Si se usa("dsn")
Usar en dsn
Endif
Si se usa("uid")
Usar In uid
Endif
Cerrar base de datos Todo amp ; Cerrar todas las bases de datos
Cerrar todo & Cierra todos los tipos de archivos, pero no cierra la ventana de comandos, la ventana de depuración, la ventana de ayuda o la ventana de seguimiento.
Borrar menús y libera todas las definiciones de menú de la memoria.
Borrar ventanas emergentes y libera todas las definiciones de menú en la memoria creadas con el comando DEFINE POPUP.
Borrar Windows y libera todas las definiciones de ventanas definidas por el usuario en la memoria y borra las ventanas en la ventana principal de VFP o en la ventana activa definida por el usuario.
Borrar y borrar pantalla
Establecer seguro en
_Screen.Picture=""
=SQLDISCONNECT(0)
Salir
* Programa: manejo de errores proporcionado por Plum, no verificado.
******************
err.prg
*********** ** ********
NERROR DE PARÁMETRO , CMESSAGE , CMESSAGE1 , CPROGRAM , NLINENO
CONFIGURAR DELIMITADORES DE COMBINACIÓN DE TEXTO para
CONFIGURAR COMBINACIÓN DE TEXTO EN
p>ESTABLECER COMBINACIÓN DE TEXTO EN ErrorLog.txt ADITIVO NOSHOW
------------------------------ -- - ------------------------------------
lt;lt; FECHA( )gt;gt; lt;lt;HORA( )gt;gt; ErrorLog
Título del programa: lt;lt;_Screen.Caption gt;gt; Versión: lt;lt;VERSION(1)gt;gt;
DO CASE
CASE _SCREEN.WINDOWSTATE = 0
\Estado de la ventana:
CASE _SCREEN.WINDOWSTATE = 1
/Estado de la ventana: Minimizada
CASE _SCREEN.WINDOWSTATE = 2
\Estado de la ventana:
Ventana visible: lt;lt;IIF(_Screen.WINDOWSTATE = 2)
Estado de la ventana: Maximizada
ENDCASE lt;lt;JUSTFNAME(SYS(16,1)) gt; gt;
(Directorio del programa ejecutable: lt; lt; JUSTPATH(SYS(16, 1))gt; gt;
(Espacio en disco del directorio del programa ejecutable: lt; lt ;SET("PATH")gt;gt;
(Directorio temporal del sistema):lt;lt;SYS(2023)gt;gt;
(Tamaño del grupo de memoria virtual): lt;lt;SYS(1001)gt;gt;
(Tamaño del grupo de memoria virtual): Espacio en disco predeterminado: lt;lt;DISKSPACE(SYS(5))
\Espacio de trabajo en uso: lt;lt;Alias()gt;gt;
\Campo activo: lt;lt;VARREAD()gt;gt;
IF TYPE('_Screen; .ClassLibrarygt;gt;
Ubicación del formulario: lt;lt;SYS(1271, _Screen.ActiveForm)gt;
ELSE
\No hay formularios activos
ENDIF
IF TYPE('_Screen.ActiveForm.ActiveControl:lt;lt;_Screen.ActiveForm.ActiveControl.Namegt;gt;
IF TYPE
('_Screen.ActiveForm.ActiveControl.Caption') = 'C'
\Control Title:lt;lt;_Screen.ActiveForm.ActiveControl.Namegt;gt;
\No Active Formulario
ENDIF
Clase base de control: lt;lt;_Screen.ActiveForm.ActiveControl.BaseClassgt;gt;
\Control derivado: lt;lt;_Screen .ActiveForm.ActiveControl.BaseClassgt;gt;
()
Biblioteca derivada de controles: lt;lt;_Screen.ActiveForm.ActiveControl.Classgt;gt; Ubicación del control:lt;lt;SYS(1271, _Screen.ActiveControl)gt;gt;
ELSE
Sin control activo
ENDIF
\Código de error: lt;lt;nErrorgt;gt;
\Mensaje de error: lt;lt;cMessagegt;gt.
\ Ubicación del error: lt;lt;cProgramgt; gt;
Número de línea: lt; nLinenogt;
\ Código de error: lt; cMessage1gt; ; MemoryLog.txt
/SALIDA DEL ENTORNO DE TRABAJO A -gt; StatusLog.txt
CONFIGURAR SEGURIDAD DESACTIVADA
MOSTRAR MEMORIA AL Archivo MemoryLog.txt NOCONSOLE
MOSTRAR ESTADO AL Archivo StatusLog.txt NOCONSOLE
------------------------------- --- -------------------------------------
ESTABLECER COMBINACIÓN DE TEXTO EN
SET TEXTMERGE TO
p>Nvalue = ;
MESSAGEBOX('¡Ocurrió un error en el programa! Los detalles son los siguientes: 'CHR(13) CHR(13) 'Código de error:'
LTRIM(STR(NERROR))
CHR(13)
p>
'Número de línea de error: ' ;
LTRIM(STR(NLINENO))
'Número de línea de error: '
LTRIM( STR(NLINENO) ));
'Número de línea de error: ';
LTRIM(STR(NLINENO));