Академический Документы
Профессиональный Документы
Культура Документы
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II
Para comenzar hay que tener la siguiente estructura de directorios en el disco C:\
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 Adems de esto es muy importante declarar las rutas alternas para evitar que nuestros formularios desplieguen errores como que no se encuentra algn archivo, esto lo hacemos de la siguiente manera: SET PATH TO DATOS, FORMULARIOS, IMG, INFORMES, MENUS, PRG los nombres de cada una de las carpetas de la estructura creada en el primer paso. Cabe mencionar que para que nuestro formulario funcione necesitamos declara algunas variables publicas, el nombre de las variables son a criterio del programador en nuestro caso las llamaremos OPCION, UBICA ; como este proceso debe realizar cada vez que vayamos a programar, podemos almacenar las lneas de ruta y declaracin de variables dentro de un prg y le podemos llamar RUTA que son
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE 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 de datos del formulario la tabla clientes de la siguiente manera
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II Aparece la ventana del entorno de datos elegimos la Tabla CLIENTES y pulsamos Click Sobre el botn ADD posteriormente damos Click al botn 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.
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II Nos queda de la siguiente manera distribuyndolos adecuadamente, y editando la propiedad NAME de los TEXT para tratar de generar programacin de tipo genrica.
Luego introducimos y editamos los botones correspondientes para el funcionamiento de nuestro formulario de mantenimiento. Quedando de la siguiente manera:
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II Solo agregar los botones bsicos y no vamos validar los datos de entrada (el formulario debe verse as) El nombre de los botones puedes dejarlos como estn 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 Modificacin, consulta y eliminacin de registros. Asegurandonos que el grid esta seleccionado hacemos uso del men principal de fox, elegimos la opcin 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 adems 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 estn invisibles cuando el formulario inicie. Adems tenemos que cambiar la propiedad ENABLED=.F. Y READONLY=.T. del GRID. Y por ltimo la propiedad ENABLED=.F. del botn guardar para evitar que se guarden vacos los campos
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II A CONTINUACIN ES HORA DE EMPEZAR A PROGRAMAR Como primer paso crearemos un mtodo con el nombre OPCIONES el cual tendr la programacin de todos los botones principales de nuestro formulario de mantenimiento, para mejor comprensin dividiremos los botones en dos grupos llamando el primer grupo BOTONES PRINCIPALES
Para crear el mtodo, primero tenemos que asegurarnos que no est seleccionado ningn objeto luego vamos al men principal de fox y elegimos la Opcion de FORM, elegimos del submen la opcin NEW METHOD
Procedemos a escribir el cdigo en dicho mtodo que ahora se encuentra en la ventana de propiedades de nuestro formulario, nos quedara de la siguiente manera: METODO OPCIONES DEL FORMULARIO
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II De igual manera creamos un mtodo 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 mtodos los principales de nuestro formulario, a continuacin la programacin de los botones principales: EVENTO CLICK DEL BOTON NUEVO COMMAND5
opcion=1 this.DisabledBackColor=RGB(0,128,255) thisform.opciones
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II
thisform.opciones
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II EVENTO CLICK DEL BOTON CANCELAR COMMAND4
VAMOS A PROCEDER A DEFINIR Y PROGRAMAR EL GRID. Para definir el grid, necesitamos seleccionarlo y luego dar click derecho sobre el, elegimos la opcin BUILDER (generador). Para podamos elegir la procedencia y distribucin de los registros.
10
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa 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 opcin EDIT.
11
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa 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 edicin de eventos elegimos el objeto text1 del grid, luego cambiamos de evento eligiendo el evento KEYPRESS
12
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II
GENERAR EL CDIGO DE CLIENTE Y ACTIVAR EL BOTON GUARDA Primero vamos a editar la propiedad FORMAT de los TEXT escribiendo los smbolos !k , que sirven para solo maysculas y auto seleccin respectivamente, luego procedemos generar el cdigo de cliente. Existen diferentes formas para generar cdigos, en esta GUIA lo haremos directamente en el evento INTERACTIVECHANGE del Text2 Correspondiente al Nombre del Cliente.
13
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa 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 cdigo, vamos a ejecutar el evento interactivechange del text2 que ya tiene la programacin 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.
14
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II
15
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II FORMULARIO DE BUSQUEDA DE CLIENTES. Ahora crearemos un formulario de bsqueda de clientes, donde pondremos objetos OPTION GROUP para seleccionar la bsqueda, tome en cuenta que cuando un objeto OPTION esta seleccionado, la propiedad value de ste es igual a 1, a dems 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 bsqueda. Procedemos a insertar el grupo de opciones y hacer uso del generador de grupo de opciones para editar los CAPTION y aumentar el Nmero 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 opcin de No Reg el enfoque debe empezar en el TEXT ya listo para que el usuario digite su bsqueda.
16
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa 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
17
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II EVENTO CLICK DE CADA UNA DE LAS OPCIONES El cdigo que hemos escrito es genrico, eso quiere decir que puede ser copiado y pegado en las dems opciones sin necesidad de cambiar nada. (No est dems 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 opcin que este seleccionada, la SQL es almacenada en la propiedad RECORDSOUCE del GRID.
18
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa 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 informacin adecuada. Adems debemos editar el ancho y caption de cada columna para que tenga buena apariencia como lo vimos cuando diseamos el form de MANTENIMIENTO.
19
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa 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.
20
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II Objeto: List1 Procedimiento: Dblclick
select cliente loca for allt(id_cliente) = allt(this.value) thisform.release
Y eso es todo para un formulario bsico de bsqueda de registros .Ejecute el formulario Clientes y desde ah ejecute el de bsqueda de clientes y trate de buscar un registro, se los mostrar en la lista y para seleccionar uno de ellos debe doble clic.
21
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II
22
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II
Nota: el prg llamado procedimiento debes guardarlo en la carpeta PRG Explicacin: 1. La lnea Procedure Encriptar significa que se esta creando un procedimiento llamado Encriptar. 2. La lnea Parameter mensaje significa que esta recibiendo parmetros (Valores) en la variable que se llama mensaje. 3. Luego encripta los valores utilizando ciertas funciones que son de su conocimiento. 4. La lnea Return MensajeEncriptado enva los valores recibidos en mensaje ya encriptados.
23
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa 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
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.
Explicacin: 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
24
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II procedimiento que se llama mensaje; luego el procedimiento Encriptar enva 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.
Creacin 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 Nombre Nivel Login Contrasea Tipo Carcter Carcter Carcter Carcter Ancho 40 15 25 8
Crear un formulario que contenga los objetos siguientes y agregue al entorno de datos la tabla usuario: Nombre del formulario USUARIOS
25
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II
Name = Boton Name = Bcancelar Name = Bsalir
valor de la propiedad * *
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 que creasteis para encriptar datos en el formulario anterior
Procedimiento CLICK
OBJETO: Boton
if this.caption = "\<Nuevo" this.caption = "\<Guardar" this.picture = "wzsave.bmp" ThisForm.setall("enabled",.t.,"textbox") THISFORM.TEXT1.VALUE = "" thisform.combo1.enabled=.t. thisform.bsalir.enabled=.f. thisform.bcancelar.enabled=.t. thisform.commandgroup1.enabled=.f. ThisForm.txtNombre.setfocus selec usuario SCATTER MEMVAR blank thisform.refresh else
select usuario APPEND BLANK GATHER MEMVAR thisform.setall("enabled",.f.,"textbox") thisform.combo1.enabled=.f. this.caption = "\<Nuevo" this.picture = "wznew.bmp"
26
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II
thisform.bsalir.enabled=.t. thisform.bcancelar.enabled=.f. thisform.commandgroup1.enabled=.T. =messagebox("Faltan datos para almacenar",16,"No se puede thisform.txtNombre.setfocus thisform.refresh
else guardar")
Procedimiento CLICK
OBJETO: Bcancelar
selec usuario go top SCATTER MEMVAR thisform.setall("enabled",.f.,"textbox") thisform.combo1.enabled=.f. thisform.boton.caption = "\<Nuevo" thisform.boton.picture = "wznew.bmp" thisform.bsalir.enabled=.t. thisform.commandgroup1.enabled=.T. this.enabled=.f. thisform.refresh
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: TxtContrasea
Clave = encriptar(alltrim(this.value))
Procedimiento LOSTFOCUS
OBJETO: TEXT1
Repetir = encriptar(alltr(this.value)) if clave == Repetir thisform.txtcontrasea.value = alltrim(clave) thisform.refresh else =messagebox(" Error: contraseas no coinciden ",16,thisform.caption) ThisForm.txtContrasea.value="" this.value="" ThisForm.txtContrasea.setfocus thisform.refresh endif
27
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II
28
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II CREAR MENUS
Ahora vamos a crear el men
Luego
Prompt palabra en ingles que significa Indicador Result Significa Accin resultado (la tomaremos como accin) Options significa opciones
29
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa 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
Para eso tienes que subir de nivel en el formulario, seleccione barra de mens
30
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II
Escribe .
Recuerda que tienes que subir de nivel en el formulario, seleccione barra de mens Contina realizando que se muestra:
31
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II
Ahora vamos a generar el men. El men debe estar activo (abierto) Clic en la barra de men opcin men Generar... Si el men no esta guardado VFP te pide que lo guardes Luego nos pide informacin del archivo de men que se generar
Recuerda tiene el mismo nombre que el archivo de men fuente pero su extensin es diferente en este caso es *.MPR
(Todos los mens tienen una extensin *.mnx antes de generarse, cuando se generan se crea otro archivo con la extensin a *.mpr pero con el mismo nombre, el cual es el archivo a ejecutar) Ahora si cerramos el diseador de men con CTR-W para guardar los cambios Y nos queda algo similar a lo que se muestra a continuacin
32
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa 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 botn RUN del Administrador de Proyectos:
33
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II
34
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II Como primer punto aclaro que para crear un programa principal para una aplicacin existen diversos mtodos, podramos 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 aplicacin. Para crear un PRG
**//Desactiva la barra de mens del sistema de Visual FoxPro durante la ejecucin 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 cdigo:
*Aplicacion : Establece Seteos y cerrar formulario de seguridad *Nombre: Main.prg *Autore: elmergaldamez@hotmail.com SET DEFAULT TO SYS(5) + CURDIR()
**// Establece la ruta hacia la carpeta principal cualquiera que sea la ubicacin **// Establece rutas alternas de bsquedas
SET PATH TO datos, informes,formularios,img,menuss,prg set sysmenu off set talk off set delete on set date dmy set echo off set notify off
**//Desactiva la barra de mens de Fox durante la ejecucin del sistema **// Determina si Fox muestra o no los resultados de los comandos **// Deshabilita los registros marcados para ser eliminados **// Establece el formato de fecha Dia, Mes y Ao **//Cierra la ventana Seguimiento **// Desactiva la presentacin de algunos mensajes del sistema.
35
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II
set safety off set exclusive off set refresh to 5
**//Desactiva abrir los archivos de forma exclusiva **//Actualizar cada 5 segundos
_Screen.caption="Sistema Didctico - Desarrollo de Software -ITSO-" _screen.windowstate=2 _screen.maxbutton=.f. _screen.closable=.f. _screen.controlbox=.f. do form acceso read events
**// Abre la venta de forma maximizada **// Desactiva el botn maximizar de la ventana **// Desactiva el botn cerrar **// Desactiva los botones de control de la venta principal **// Llama al formulario de acceso del sistema
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)
36
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II
PUBLIC clave,entrar store spac(10) to clave,REPETIR entrar=0
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))
37
Escuela Superior Franciscana Especializada en Ciencia y Tecnologa ESFE AGAPE Desarrollo de Software II
endif if entrar=3 =messagebox("Limite de intentos agotados"+chr(13)+; "El sistema se cerrar",16,"Error de ingreso") thisform.command2.click endif _screen.visible = .t. thisform.release
quit Espero haber conseguido ayudarlos con este material ya que lo he tratado de hacer desde el inicio para no solamente orientar a las personas que tienen un poco ms de experiencia trabajando en VFP sino para aquellos que se estn iniciando en el fascinante mundo del desarrollo de software con Visual FoxPro. Saludos y hasta una nueva oportunidad.