Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo Desarrollo de Software II
CAPITULO I CREACIÓ DE FORMULARIOS DE MANTENIMIENTO
Catedrático: Josué Elí Quijada
1
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo Desarrollo de Software II
Manual de Programación en Visual Fox Pro 9.0 En este manual se muestra la forma básica de programar formularios utilizando variables de memoria. Se tomarán como base unas tablas que en realidad no cumplen los requisitos básicos para una base de datos, sin embargo se tomaran como ejemplo por razones didácticos, didácticos, recuerden que solo se usaran para poder completar el manual, si ustedes desean crear una base de datos con todos sus requisitos deben hacer el estudio para poder determinar todos los requerimientos. Para comenzar hay que tener la siguiente estructura estructura de director d irectorios ios en el disco C:\
Ingrese Ingrese al programa Visual FoxPro y establezca una ruta de trabajo hacia la carpeta sistema de la siguiente forma desde la ventana de comandos: SET DEFAULT TO C:\SISTEMA ó bien CD C:\SISTEMA Además de esto es muy importante declarar declarar las rutas alternas para evitar que nuestros formularios formularios desplieguen errores como que no se encuentra encuentra algún archivo, esto lo hacemo h acemoss de la siguiente manera: SET PATH TO DATOS, FORMULARIOS, FORMULARIOS, IMG, INFORMES, MENUS, PRG
que son
los nombres de cada una de las carpetas de la estructur e structuraa creada en el primer paso. Cabe mencionar que para que nuestro formulario funcione necesitamos declara algunas variables variables publicas, el nombre de las variables variables son a criterio del program p rogramador ador en nuestro caso las llamaremos llamaremos OPCION, UBICA ; como este proceso proceso debe realizar cada vez que vayamos vayamos a programar, podemos almacenar almacenar las líneas de ruta y declaración de variables dentro de un prg y le podemos llamar RUTA
Catedrático: Josué Elí Quijada
2
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo Desarrollo de Software II
Cree un proyecto con el nombre de miproyecto, y dentro de él cree una base de datos con el nombre de ventas que contenga las siguientes tablas.
Creamos un formulario Llamado CLIENTES y agregamos al entorno entorno de datos datos del formulario la tabla clientes de la siguiente sigu iente manera
Catedrático: Josué Elí Quijada
3
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
Aparece la ventana del entorno de datos elegimos la Tabla CLIENTES y pulsamos Click Sobre el botón ADD posteriormente damos Click al botón Close.
Arrastramos del entorno de datos desde el ítem que dice Fields hacia el formulario en donde soltamos el puntero para que aparezcan los text y label respectivo de la tabla.
Catedrático: Josué Elí Quijada
4
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
Nos queda de la siguiente manera distribuyéndolos adecuadamente, y editando la
propiedad NAME de los TEXT para tratar de generar programación de tipo genérica.
Luego introducimos y editamos los botones correspondientes para el funcionamiento de nuestro formulario de mantenimiento. Quedando de la siguiente manera:
Catedrático: Josué Elí Quijada
5
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
Solo agregar los botones básicos y no vamos validar los datos de entrada (el formulario debe verse así)
El nombre de los botones puedes dejarlos como están por defecto, en este caso se llamaran
Command1, command2, command3 y así sucesivamente hasta llegar al Command9 que es el de salir Luego insertamos un grid que servirá para navegar sobre los registros y elegir el deseado para hacer las operaciones de Modificación, consulta y eliminación de registros. Asegurandonos que el grid esta seleccionado hacemos uso del menú principal de fox, elegimos la opción FORMAT y luego SEND TO BACK quedando de la siguiente forma.
Como siguiente paso editaremos la propiedad VISIBLE de todos los TEXT y LABEL y además los BOTONES GUARDAR, LIMPIAR, ELIMINAR Y CANCELAR para cambiar el estado de estos cuando el formulario inicia. Las propiedad tiene que ser cambiada a VISIBLE=.F. esto provocara que dichos objetos estén invisibles cuando el formulario inicie. Además tenemos que cambiar la propiedad ENABLED=.F. Y READONLY=.T. del GRID. Y por último la propiedad ENABLED=.F. del botón guardar para evitar que se guarden vacíos los campos Catedrático: Josué Elí Quijada
6
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
A CONTINUACIÓN ES HORA DE EMPEZAR A PROGRAMAR Como primer paso crearemos un método con el nombre OPCIONES el cual tendrá la programación de todos los botones principales de nuestro formulario de mantenimiento, para mejor comprensión dividiremos los botones en dos grupos llamando el primer grupo
BOTONES PRINCIPALES
Y el segundo grupo lo llamaremos BOTONES AUXILIARES
Para crear el método, primero tenemos que asegurarnos que no esté seleccionado ningún objeto luego vamos al menú principal de fox y elegimos la Opcion de FORM, elegimos del submenú la opción NEW METHOD
Procedemos a escribir el código en dicho método que ahora se encuentra en la ventana de propiedades de nuestro formulario, nos quedara de la siguiente manera:
METODO OPCIONES DEL FORMULARIO
Catedrático: Josué Elí Quijada
7
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
De igual manera creamos un método que le llamaremos ENTER, el cual se ejecutará cuando el usuario presione la TECLA ENTER dentro del grid, nos tiene que quedar de la siguiente manera.
Bueno estos dos métodos los principales de nuestro formulario, a continuación la programación de los botones principales:
EVENTO CLICK DEL BOTON NUEVO COMMAND5 opcion=1 this.DisabledBackColor =RGB(0,128,255) thisform.opciones
EVENTO CLICK DEL BOTON MODIFICAR COMMAND6 opcion=2 this.DisabledBackColor =RGB(0,128,255) thisform.opciones
EVENTO CLICK DEL BOTON CONSULTAR COMMAND7 opcion=3 this.DisabledBackColor =RGB(0,128,255) thisform.opciones
EVENTO CLICK DEL BOTON ELIMINAR COMMAND8 opcion=4 this.DisabledBackColor =RGB(0,128,255)
Catedrático: Josué Elí Quijada
8
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II thisform.opciones
EVENTO LOAD DEL FORM Select clientes Scatter memvar blank
EVENTO CLICK DEL BOTON GUARDAR COMMAND1
EVENTO CLICK DEL BOTON LIMPIAR COMMAND2
EVENTO CLICK DEL BOTON ELIMINAR COMMAND3 (BOTON AUXILIAR)
Catedrático: Josué Elí Quijada
9
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
EVENTO CLICK DEL BOTON CANCELAR COMMAND4
¿Bueno, Salir no hay que mostrarlo, verdad?
VAMOS A PROCEDER A DEFINIR Y PROGRAMAR EL GRID. Para definir el grid, necesitamos seleccionarlo y luego dar click derecho sobre el, elegimos la opción BUILDER (generador). Para podamos elegir la procedencia y distribución de los registros.
Catedrático: Josué Elí Quijada
10
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
Damos click a la tabla clientes, eso va ha permitir visualizar los campos de la tabla,
haciendo uso de los botones de desplazamiento, los trasladamos al ítem SELECT FIELDS(campos seleccionados), en donde deben aparecer todos los campos que queremos que aparezcan en nuestro grid.
Cabe mencionar que el grid es un objeto de tipo contenedor, osea que esta compuesto de otros objetos como lo son COLUMNAS, HEADER Y TEXT, los cuales para mejor apariencia deben ser editados, por ejemplo el ANCHO Y CAPTION de las columnas. Para editar los objetos del grid debemos dar click derecho sobre el grid y luego elegir la opción EDIT.
Catedrático: Josué Elí Quijada
11
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
Ahora procedemos a programar en el evento KEYPRESS del TEXT1 pero del grid,es muy importante que usted se asegure de no hacerlo en el text del formulario, damos doble click sobre el grid y luego en la ventana de edición de eventos elegimos el objeto text1 del grid, luego cambiamos de evento eligiendo el evento KEYPRESS
EVENTO KEYPRESS DEL TEXT1 DEL GRID Si presionamos ENTER dentro del grid ejecuta el método que creamos anteriormente llamado ENTER y La BARRA ESPACIADORA ejecuta una búsqueda de registros. (ESTE CODIGO DEBE COPIARSE Y PEGARSE EN CADA UNA DE LAS COLUMNAS DEL GRID EN EL TEXT1)
VAMOS A PROCEDER A PROGRAMAR Y VALIDAR LOS TEXT Y BOTON DE GUARDAR Primero vamos a poner la propiedad ENABLED=.F. del Boton de Guardar para evitar que nos puedan agregar datos vacios, puesto que no hemos validado eso todavía. Luego vamos a convertir todos los TEXT en variables de memoria, editando la propiedad CONTROLSOURCE de cada uno de los TEXT, en donde reemplazamos el nombre de la tabla por la letra M (de memory) de la siguiente manera. Esto es la escencia de las variables de memoria por eso muy importante realizarlo.
Catedrático: Josué Elí Quijada
12
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
GENERAR EL CÓDIGO DE CLIENTE Y ACTIVAR EL BOTON GUARDA Primero vamos a editar la propiedad FORMAT de los TEXT escribiendo los símbolos !k , que sirven para solo mayúsculas y auto selección respectivamente, luego procedemos generar el código de cliente. Existen diferentes formas para generar códigos, en esta GUIA lo haremos directamente en el evento INTERACTIVECHANGE del Text2 Correspondiente al Nombre del Cliente.
Catedrático: Josué Elí Quijada
13
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
Luego tenemos que programar en el evento INTERACTIVECHANGE de cada uno de los TEXT que son obligatorios, no vamos a repetir el código, vamos a ejecutar el evento interactivechange del text2 que ya tiene la programación necesaria.
Y para terminar con nuestro formulario de mantenimiento, vamos a validar el nombre del cliente para que nuestro sistema nos comunique si el cliente ya existe, nosotros determinaremos si se puede repetir o no el nombre, para ello hay que tomar en cuenta que pueden existir mas de una persona que se llame exactamente igual, por ejemplo si fuese un formulario de marcas, no debe dejar que existan dos con el mismo nombre, repito es a criterio de la tabla a la que vayamos a agregar datos.
EVENTO VALID DEL TEXT2 (NOMBRE)
Solo resta editar el CAPTION y poner el FORM como AUTOCENTER=.T. HEMOS TERMINADO CON EL FORM DE MANTENIMIENTO
Catedrático: Josué Elí Quijada
14
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
CAPITULO II CREACIÓ DE FORMULARIOS DE BUSQUEDA
Catedrático: Josué Elí Quijada
15
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
FORMULARIO DE BUSQUEDA DE CLIENTES. Ahora crearemos un formulario de búsqueda de clientes, donde pondremos objetos OPTION GROUP para seleccionar la búsqueda, tome en cuenta que cuando un objeto OPTION esta seleccionado, la propiedad value de éste es igual a 1, a demás utilizaremos un control GRID para mostrar los datos. Debemos nombrar al formulario BUSCA_CLIE, puesto que en el METODO ENTER del form de mantenimiento Programamos con ese nombre al formulario de búsqueda. Procedemos a insertar el grupo de opciones y hacer uso del generador de grupo de opciones para editar los CAPTION y aumentar el Número de OPCIONES, de la siguiente manera.
Luego insertamos un LABEL, un TEXT, el GRID y los botones necesarios, quedando de la siguiente manera; vamos dejar como auto seleccionado la opción de No Reg el enfoque debe empezar en el TEXT ya listo para que el usuario digite su búsqueda.
Catedrático: Josué Elí Quijada
16
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
Las propiedades a cambiar del formulario solo es Windowstype = 1 Modal Para poder utilizar el grid con Consultas SQL debemos cambiar las propiedades RECORDSOURCETYPE=4 SQL, y la propiedad RECORDSOURCE= SELECT * FROM CLIENTES INTO CURSOR XLX
Catedrático: Josué Elí Quijada
17
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
EVENTO CLICK DE CADA UNA DE LAS OPCIONES El código que hemos escrito es genérico, eso quiere decir que puede ser copiado y pegado en las demás opciones sin necesidad de cambiar nada. (No está demás mencionar que para editar las opciones damos Click derecho y luego EDIT)
EVENTO INTERACTIVECHANGE DEL TEXT1 Aquí en se realiza una consulta SQL dependiendo la opción que este seleccionada, la SQL es almacenada en la propiedad RECORDSOUCE del GRID.
Catedrático: Josué Elí Quijada
18
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
Vamos a proceder a programar el evento KEYPRESS y DBLCLICK del TEXT1 pero del GRID de igual manera como lo hicimos en el formulario de mantenimiento, con la variante que NO vamos ocupar el GENERRADOR de GRID para determinar las columnas del grid, vamos a utilizar la propiedad COLUMNCOUNT, en este caso vamos a colocar cuatro columnas, sin embargo debe contener las columnas que sean necesarias para ver la información adecuada. Además debemos editar el ancho y caption de cada columna para que tenga buena apariencia como lo vimos cuando diseñamos el form de MANTENIMIENTO.
Catedrático: Josué Elí Quijada
19
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
EVENTO KEYPRESS DEL TEXT1 DEL GRID Como en form de MANTENIMIENTO anteriormente descrito tenemos que copiar en todos los TEXT1 de cada columna del GRID.
EVENTO DBLCLICK DEL TEXT1 DEL GRID
EVENTO CLICK DEL BOTON CANCELAR Thisform.release (copy, paste)
EVENTO CLICK DEL BOTON CANCELAR
Catedrático: Josué Elí Quijada
20
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Objeto: List1
Procedimiento: Dblclick
Desarrollo de Software II
select cliente loca for allt(id_cliente) = allt(this.value) thisform.release
Y eso es todo para un formulario básico de búsqueda de registros .Ejecute el formulario Clientes y desde ahí ejecute el de búsqueda de clientes y trate de buscar un registro, se los mostrará en la lista y para seleccionar uno de ellos debe doble clic.
Catedrático: Josué Elí Quijada
21
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
CAPITULO III ENCRIPATAMIENTO PARA SEGURIDAD EN ACCESOS AL SISTEMA
Catedrático: Josué Elí Quijada
22
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
Como Encriptar Claves a través de procedimientos
Para Encriptar claves se debe crear un programa que realice la encriptación, desde el proyecto, crear un prg que se llame procedimiento Y que contenga lo siguiente: ******************************** * PROCEDIMIENTO PARA ENCRIPTAR * ******************************** Procedure Encriptar Parameter mensaje MensajeEncriptado = "" for a = 1 to len(alltrim(mensaje) ) letra = subs(alltrim(mensaje),a,1) AsciideLetra = asc(letra) LetraEncriptada = chr(AsciideLetra * 2) MensajeEncriptado = MensajeEncriptado + LetraEncriptada Endfor Return MensajeEncriptado *********************************** * PROCEDIMIENTO PARA DESENCRIPTAR * *********************************** Procedure desencripta Parameter mensa MensajedesenEncripta = "" for A = 1 to len(mensa) CARACTER = subs(ALLTRIM(mensa),a,1) LETRA=ASC(CARACTER) B=LETRA/2 B = chr(B) MensajedesenEncripta= MensajedesenEncripta + B Endfor Return MensajedesenEncripta
Nota: el prg llamado procedimiento debes guardarlo en la carpeta PRG Explicación: 1. La línea Procedure Encriptar significa que se esta creando un procedimiento llamado Encriptar. 2. La línea Parameter mensaje significa que esta recibiendo parámetros (Valores) en la variable que se llama mensaje. 3. Luego encripta los valores utilizando ciertas funciones que son de su conocimiento.
4. La línea Return MensajeEncriptado envía los valores recibidos en mensaje ya encriptados. Catedrático: Josué Elí Quijada
23
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
El programa anterior contiene dos procedimientos un encriptador y un desencriptador. Ahora agregue un formulario llamado ENCRIPTAMIENTO que contenga los siguientes objetos:
Ahora vamos a programar nuestro formulario encriptador y desencriptador Primero invocamos el archivo que contiene los procedimientos que para tal caso se llama
procedimiento.prg OBJETO: FORM
PROCEDIMIENTO: LOAD (puedes utilizar el INIT en lugar de load)
set path to datos,img,formularios,prg, menus,informes set procedure to procedimiento
BOTON ENCRIPTAR
PROCEDIMIENTO: Click
thisform.text2.value = encriptar(thisform.text1.value) thisform.text2.visible = .t. thisform.label2.visible = .t.
Explicación: thisform.text2.value = encriptar(thisform.text1.value) : Lo que hace esto es llamar un procedimiento que se llama Encriptar que se encuentra en el archivo procedimiento que se invocó desde el LOAD, y luego envia el valor del text1 en la variable que recibe el
Catedrático: Josué Elí Quijada
24
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
procedimiento que se llama mensaje; luego el procedimiento Encriptar envía el valor en la variable MensajeEncriptado y se lo esta asignando al valor del text2. BOTON ENCRIPTAR
PROCEDIMIENTO: Click
thisform.text3.value=desencripta( thisform.text2.value) thisform.text3.visible=.t. thisform.label3.visible=.t.
CLICK BOTON LIMPIAR thisform.setall("value","","textbox") thisform.text1.setfocus thisform.text2.visible=.f. thisform.label2.visible=.f. thisform.refresh
Hasta aquí como Encriptar valores utilizando procedimientos. Ahora vamos a crear un formulario de usuarios y guardar la clave encriptada en la tabla correspondiente.
Creación De Usuarios Crear la siguiente tabla con el nombre de usuario y agregarla a la base de datos ventas (El campo login debe ser Índice Principal). Campo
Tipo
Ancho
Nombre Nivel Login Contraseña
Carácter Carácter Carácter Carácter
40 15 25 8
Crear un formulario que contenga los objetos siguientes y agregue al entorno de datos la tab la usuario:
Nombre del formulario USUARIOS
Catedrático: Josué Elí Quijada
25
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
Name = Boton Name = Bcancelar Name = Bsalir
Objetos: Txtcontraseña
propiedad Passwordchar
valor de la propiedad *
Text1 =
Passwordchar
*
Ahora vamos a programar:
OBJETO: FORM
PROCEDIMIENTO LOAD
set path to datos,img,prg,informes,formularios set procedure to procedimiento PUBLIC clave,repetir store spac(10) to clave ,repetir SELECT Usuario SCATTER MEMVAR Thisform.Refresh
NOTA: Recuerda que el procedimiento que estamos invocando es el q ue creasteis para encriptar datos en el formulario anterior
Procedimiento CLICK
OBJETO: Boton
if this.caption = "\
select usuario APPEND BLANK GATHER MEMVAR thisform.setall("enabled",.f.,"textbox") thisform.combo1.enabled=.f. this.caption = "\
Catedrático: Josué Elí Quijada
26
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II thisform.bsalir.enabled=.t. thisform.bcancelar.enabled=.f. thisform.commandgroup1.enabled=.T. else =messagebox("Faltan datos para almacenar",16,"No se puede guardar") thisform.txtNombre.setfocus thisform.refresh endif endif thisform.refresh
Procedimiento CLICK
OBJETO: Bcancelar
selec usuario go top SCATTER MEMVAR thisform.setall("enabled",.f.,"textbox") thisform.combo1.enabled=.f. thisform.boton.caption = "\
Procedimiento VALID
OBJETO: TxtLogin
SELECT Usuario SET ORDER TO Login IF SEEK (m.Login) =messagebox("Error login ya existe ",32,"Error") return 0 ENDIF
Procedimiento VALID
OBJETO: TxtContraseña
Clave = encriptar(alltrim(this.value))
Procedimiento LOSTFOCUS
OBJETO: TEXT1
Repetir = encriptar(alltr(this.value)) if clave == Repetir thisform.txtcontraseña.value = alltrim(clave) thisform.refresh else =messagebox(" Error: contraseñas no coinciden ",16, thisform.caption) ThisForm.txtContraseña. value="" this.value="" ThisForm.txtContraseña. setfocus thisform.refresh endif
Catedrático: Josué Elí Quijada
27
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
CAPITULO IV CREACIÓN Y GENERADOR DE MENÚS
Catedrático: Josué Elí Quijada
28
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE CREAR MENUS
Desarrollo de Software II
Ahora vamos a crear el menú
Luego
Visualizamos la siguiente ventana
Prompt palabra en ingles que significa Indicador Result Significa Acción ó resultado (la tomaremos como acción) Options significa opciones
Catedrático: Josué Elí Quijada
29
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II En la columna indicador (Prompt en ingles) escribe Formulario, Consultas y Salir , tal como se muestra en la imagen
Ahora creamos el submenú para Formulario
Ahora escribe lo que muestra la siguiente imagen:
Ahora creamos el submenú para Consultas
Para eso tienes que subir de nivel en el formulario, seleccione barra de menús
Catedrático: Josué Elí Quijada
30
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
Entonces realiza lo que a continuación de se muestra
Escribe
.
Ahora creamos el submenú para Salir
Recuerda que tienes que subir de nivel en el formulario, seleccione barra de menús Continúa realizando que se muestra:
Catedrático: Josué Elí Quijada
31
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
Ahora vamos a generar el menú. ·
El menú debe estar activo (abierto)
·
Clic en la barra de menú opción menú
·
Generar...
·
Si el menú no esta guardado VFP te pide que lo guardes
·
Luego nos pide información del archivo de menú que se generará
·
Recuerda tiene el mismo nombre que el archivo de menú fuente pero su extensión es diferente en este caso es *.MPR
(Todos los menús tienen una extensión *.mnx antes de generarse, cuando se generan se crea otro archivo con la extensión a *.mpr pero con el mismo nombre, el cual es el archivo a ejecutar) ·
Ahora si cerramos el diseñador de menú con CTR-W para guardar los cambios
·
Y nos queda algo similar a lo que se muestra a continuación
Catedrático: Josué Elí Quijada
32
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
Ahora es cuando ya podemos utilizar el menú Formulario, Consultas y Salir; y ejecutar los formularios que hemos creado anteriormente. Para ello ejecutar utiliza en botón RUN del Administrador de Proyectos:
Catedrático: Josué Elí Quijada
33
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II
CAPITULO V CREACIÓN Y CONFIGURACION PARA EL PROGRAMA PRINCIPAL DE LA APLICACIÓN
Catedrático: Josué Elí Quijada
34
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II Como primer punto aclaro que para crear un programa principal para una aplicación existen diversos métodos, podríamos determinar a un formulario como principal sin embargo para nuestro caso vamos a proceder a crear un PRG para posteriormente configurarlo como principal de la aplicación.
Para crear un PRG
**//Desactiva la barra de menús del sistema de Visual FoxPro durante la ejecución del sistema set sysmenu off Do Menu.Mpr
Crear Ejecutable un proyecto Ahora Para poder empaquetar todo el proyecto, se debe crear un programa para configurar las pantallas, configuraciones de ventanas, etc. Desde el administrador reproyectos, crear un programa con el siguiente código: *Aplicacion : Establece Seteos y cerrar formulario de seguridad *Nombre: Main.prg *Autore:
[email protected] SET DEFAULT TO SYS(5) + CURDIR()
**// Establece la ruta hacia la carpeta principal cualquiera que sea la ubicación
**// Establece rutas alternas de búsquedas
SET PATH TO datos, informes,formularios,img,menuss,prg set sysmenu off
**//Desactiva la barra de menús de Fox durante la ejecución del sistema
set talk off
**// Determina si Fox muestra o no los resultados de los comandos
set delete on
**// Deshabilita los registros marcados para ser eliminados
set date dmy
**// Establece el formato de fecha Dia, Mes y Año
set echo off
**//Cierra la ventana Seguimiento
set notify off
**// Desactiva la presentación de algunos mensajes del sistema.
**//muestra o no un cuadro de diálogo antes de sobrescribir un archivo existente
Catedrático: Josué Elí Quijada
35
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II set safety off set exclusive off
**//Desactiva abrir los archivos de forma exclusiva
set refresh to 5
**//Actualizar cada 5 segundos
**// Permite establecer el titulo de la ventana principal
_Screen.caption="Sistema Didáctico - Desarrollo de Software -ITSO-" _screen.windowstate=2
**// Abre la venta de forma maximizada
_screen.maxbutton=.f.
**// Desactiva el botón maximizar de la ventana
_screen.closable=.f.
**// Desactiva el botón cerrar
_screen.controlbox=.f.
**// Desactiva los botones de control de la venta principal
do form acceso
**// Llama al formulario de acceso del sistema
read events
NOTA IMPORTANTE: El nombre de este programa debe ser Main.prg y debes de establecerlo como principal desde tu proyecto (Clic derecho, luego selecciona SET MAIN)
Formulario de Acceso al Sistema A continuación vamos a crear un ejemplo de un formulario de acceso a un sistema. Para Comenzar, debe crear un formulario con los siguientes objetos:
Las propiedades para los objetos son: TEXT2 Enabled = .f. Passwordchar
BOTON ACEPTAR Enabled = .f. =*
Procedimiento LOAD del FORM SET PATH TO DATOS,IMG,FORMULARIOS,PRG, MENUS,INFORMES set procedure to PROCEDIMIENTO
Catedrático: Josué Elí Quijada
36
Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II PUBLIC clave,entrar store spac(10) to clave,REPETIR entrar=0
Crear un metodo con el nombre vacio y que contenga lo siguiente do case case empty(allt(thisform.text1.value)) or; empty(allt(thisform.text2.value)) thisform.command1.enabled=.f. otherwise thisform.command1.enabled=.t. endcase THISFORM.REFRESH
Valid Text1 selec usuario if !empty(this.value) locate for alltrim(login)==alltrim(this.value) if !found() =messagebox("Error ",16,thisform.caption) this.value=" " ThisForm.Label1.caption = "" return 0 thisform.refresh else ThisForm.Label1.caption = usuario.nombre thisform.refresh endif thisform.text2.enabled=.t. endif
Interactivechange Text2 thisform.vacio
Valid Text2 Clave = encriptar(alltr(this.value))
Click command1 Aceptar selec usuario locate for alltr(login)=alltr(thisform.text1.value); and alltr(contraseña)=alltr(clave) if !found() =messagebox ("Error: Usuario o Contraseña No Coinciden"+ chr(13)+; "Consulte Con El Administrador De Sistema",16,thisform.caption) entrar=entrar+1 thisform.text2.value="" thisform.text2.SETFOCUS() else DO FORM FONDO do menu.mpr _screen.closable=.f. _screen.windowstate = 2
Catedrático: Josué Elí Quijada
37