Está en la página 1de 38

Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE

Desarrollo de Software II

CAPITULO I

CREACIÓ DE FORMULARIOS

DE MANTENIMIENTO

Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE

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, 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 de directorios en el disco C:\

tener la siguiente estructura de directorios en el disco C:\ Ingrese al programa Visual FoxPro y

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 las rutas alternas para evitar que nuestros

formularios desplieguen errores como que no se encuentra algún 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 líneas de ruta y declaración de variables

dentro de un prg y le podemos llamar RUTA

que son

Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE

Desarrollo de Software II

y Tecnología ESFE AGAPE Desarrollo de Software II Cree un proyecto con el nombre de miproyecto

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.

con el nombre de ventas que contenga las siguientes tablas. Creamos un formulario Llamado CLIENTES y

Creamos un formulario Llamado CLIENTES y agregamos al entorno de datos del

formulario la tabla clientes de la siguiente manera

al entorno de datos del formulario la tabla clientes de la siguiente manera Catedrático: Josué Elí

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.

el botón ADD posteriormente damos Click al botón Close. Arrastramos del entorno de datos desde el

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.

soltamos el puntero para que aparezcan los text y label respectivo de la tabla. Catedrático: Josué

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.

TEXT para tratar de generar programación de tipo genérica. Luego introducimos y editamos los botones correspondientes

Luego introducimos y editamos los botones correspondientes para el funcionamiento de

nuestro formulario de mantenimiento. Quedando de la siguiente manera:

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.

FORMAT y luego SEND TO BACK quedando de la siguiente forma. Como siguiente paso editaremos la
FORMAT y luego SEND TO BACK quedando de la siguiente forma. Como siguiente paso editaremos la

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

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

en dos grupos llamando el primer grupo BOTONES PRINCIPALES Y el segundo grupo lo llamaremos BOTONES

Y el segundo grupo lo llamaremos BOTONES AUXILIARES

Y el segundo grupo lo llamaremos BOTONES AUXILIARES Para crear el método, primero tenemos que asegurarnos

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

Opcion de FORM, elegimos del submenú la opción NEW METHOD Procedemos a escribir el código en

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

formulario, nos quedara de la siguiente manera: METODO OPCIONES DEL FORMULARIO Catedrático: Josué Elí Quijada 7

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.

del grid, nos tiene que quedar de la siguiente manera. Bueno estos dos métodos los principales

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)

Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE

thisform.opciones

Select clientes Scatter memvar blank

Desarrollo de Software II

EVENTO LOAD DEL FORM

EVENTO CLICK DEL BOTON GUARDAR COMMAND1

LOAD DEL FORM EVENTO CLICK DEL BOTON GUARDAR COMMAND1 EVENTO CLICK DEL BOTON LIMPIAR COMMAND2 EVENTO

EVENTO CLICK DEL BOTON LIMPIAR COMMAND2

COMMAND1 EVENTO CLICK DEL BOTON LIMPIAR COMMAND2 EVENTO CLICK DEL BOTON ELIMINAR COMMAND3 (BOTON

EVENTO CLICK DEL BOTON ELIMINAR COMMAND3 (BOTON AUXILIAR)

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

Software II EVENTO CLICK DEL BOTON CANCELAR COMMAND4 ¿Bueno, Salir no hay que mostrarlo, verdad? VAMOS

¿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.

(generador). Para podamos elegir la procedencia y distribución de los registros. 10 Catedrático: Josué Elí Quijada

10

Catedrático: Josué Elí Quijada

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.

todos los campos que queremos que aparezcan en nuestro grid. Cabe mencionar que el grid es

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.

del grid debemos dar click derecho sobre el grid y luego elegir la opción EDIT. Catedrático:

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

grid, luego cambiamos de evento eligiendo el evento KEYPRESS EVENTO KEYPRESS DEL TEXT1 DEL GRID Si

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)

Y PEGARSE EN CADA UNA DE LAS COLUMNAS DEL GRID EN EL TEXT1) VAMOS A PROCEDER

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.

Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE

Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II GENERAR EL CÓDIGO DE CLIENTE

Desarrollo de Software II

y Tecnología ESFE AGAPE Desarrollo de Software II GENERAR EL CÓDIGO DE CLIENTE Y ACTIVAR EL

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.

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.

del text2 que ya tiene la programación necesaria. Y para terminar con nuestro formulario de mantenimiento,

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)

que vayamos a agregar datos. EVENTO VALID DEL TEXT2 (NOMBRE) Solo resta editar el CAPTION y

Solo resta editar el CAPTION y poner el FORM como AUTOCENTER=.T.

HEMOS TERMINADO CON EL FORM DE MANTENIMIENTO

Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE

Desarrollo de Software II

CAPITULO II

CREACIÓ DE FORMULARIOS

DE BUSQUEDA

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.

y aumentar el Número de OPCIONES, de la siguiente manera. Luego insertamos un LABEL, un TEXT,
y aumentar el Número de OPCIONES, de la siguiente manera. Luego insertamos un LABEL, un TEXT,

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.

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

SQL, y la propiedad RECORDSOURCE= SELECT * FROM CLIENTES INTO CURSOR XLX Catedrático: Josué Elí Quijada
SQL, y la propiedad RECORDSOURCE= SELECT * FROM CLIENTES INTO CURSOR XLX Catedrático: Josué Elí Quijada

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)

para editar las opciones damos Click derecho y luego EDIT) EVENTO INTERACTIVECHANGE DEL TEXT1 Aquí en

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.

que este seleccionada, la SQL es almacenada en la propiedad RECORDSOUCE del GRID. Catedrático: Josué Elí

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.

tenga buena apariencia como lo vimos cuando diseñamos el form de MANTENIMIENTO. Catedrático: Josué Elí Quijada
tenga buena apariencia como lo vimos cuando diseñamos el form de MANTENIMIENTO. Catedrático: Josué Elí Quijada

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.

que copiar en todos los TEXT1 de cada columna del GRID. EVENTO DBLCLICK DEL TEXT1 DEL

EVENTO DBLCLICK DEL TEXT1 DEL GRID

de cada columna del GRID. EVENTO DBLCLICK DEL TEXT1 DEL GRID EVENTO CLICK DEL BOTON CANCELAR

EVENTO CLICK DEL BOTON CANCELAR

Thisform.release (copy, paste)

EVENTO CLICK DEL BOTON CANCELAR

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.

Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE

Desarrollo de Software II

CAPITULO III

ENCRIPATAMIENTO

PARA SEGURIDAD

EN ACCESOS AL SISTEMA

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.

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:

ENCRIPTAMIENTO que contenga los siguientes objetos: Ahora vamos a programar nuestro formulario encriptador y

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

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

thisform.text3.value=desencripta(thisform.text2.value)

thisform.text3.visible=.t.

thisform.label3.visible=.t.

PROCEDIMIENTO: Click

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

Carácter

40

Nivel

Carácter

15

Login

Carácter

25

Contraseña

Carácter

8

Crear un formulario que contenga los objetos siguientes y agregue al entorno de datos la tabla

usuario:

Nombre del formulario USUARIOS

y agregue al entorno de datos la tabla usuario: Nombre del formulario USUARIOS Catedrático: Josué Elí
y agregue al entorno de datos la tabla usuario: Nombre del formulario USUARIOS Catedrático: Josué Elí

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:

propiedad

valor de la propiedad

Txtcontraseña

Passwordchar

*

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 que creasteis para encriptar datos en el formulario anterior

Procedimiento CLICK

if this.caption = "\<Nuevo" this.caption = "\<Guardar" this.picture = "wzsave.bmp" ThisForm.setall("enabled",.t.,"textbox") THISFORM.TEXT1.VALUE = ""

OBJETO: Boton

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

if !empty(ThisForm.txtNombre.value)and !empty(ThisForm.combo1.value)and; !empty(ThisForm.txtcontraseña.value)

select usuario APPEND BLANK GATHER MEMVAR thisform.setall("enabled",.f.,"textbox")

thisform.combo1.enabled=.f.

this.caption = "\<Nuevo" this.picture = "wznew.bmp"

Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE

else

thisform.bsalir.enabled=.t. thisform.bcancelar.enabled=.f.

thisform.commandgroup1.enabled=.T.

Desarrollo de Software II

=messagebox("Faltan datos para almacenar",16,"No se puede

guardar")

thisform.txtNombre.setfocus

thisform.refresh

endif

endif

thisform.refresh

Procedimiento CLICK

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

OBJETO: Bcancelar

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

Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE

Desarrollo de Software II

CAPITULO IV

CREACIÓN Y GENERADOR

DE MENÚS

Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE

CREAR MENUS

Ahora vamos a crear el menú

Desarrollo de Software II

MENUS Ahora vamos a crear el menú Desarrollo de Software II Luego Visualizamos la siguiente ventana

Luego

Ahora vamos a crear el menú Desarrollo de Software II Luego Visualizamos la siguiente ventana Prompt

Visualizamos la siguiente ventana

de Software II Luego Visualizamos la siguiente ventana Prompt palabra en ingles que significa Indicador Result

Prompt palabra en ingles que significa Indicador Result Significa Acción ó resultado (la tomaremos como acción) Options significa opciones

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

Consultas y Salir , tal como se muestra en la imagen Ahora creamos el submenú para

Ahora creamos el submenú para Formulario

en la imagen Ahora creamos el submenú para F ormulario Ahora escribe lo que muestra la

Ahora escribe lo que muestra la siguiente imagen:

ormulario Ahora escribe lo que muestra la siguiente imagen: Ahora creamos el submenú para C onsultas

Ahora creamos el submenú para Consultas

Para eso tienes que subir de nivel en el formulario, seleccione barra de menús

Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE

Desarrollo de Software II

y Tecnología ESFE AGAPE Desarrollo de Software II Entonces realiza lo que a continuación de se
y Tecnología ESFE AGAPE Desarrollo de Software II Entonces realiza lo que a continuación de se

Entonces realiza lo que a continuación de se muestra

II Entonces realiza lo que a continuación de se muestra Escribe . Ahora creamos el submenú

Escribe .

realiza lo que a continuación de se muestra Escribe . Ahora creamos el submenú para S

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:

en el formulario, seleccione barra de menús Continúa realizando que se muestra: Catedrático: Josué Elí Quijada

Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE

Desarrollo de Software II

y Tecnología ESFE AGAPE Desarrollo de Software II Ahora vamos a generar el menú. El menú

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á

nos pide información del archivo de menú que se generará Recuerda tiene el mismo nombre que

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

Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE

Especializada en Ciencia y Tecnología ESFE AGAPE Desarrollo de Software II Ahora es cuando ya podemos

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:

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

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: elmergaldamez@hotmail.com

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

Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE

set safety off

Desarrollo de Software II

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

_screen.maxbutton=.f.

_screen.closable=.f.

**// Abre la venta de forma maximizada

**// Desactiva el botón maximizar de la ventana

**// Desactiva el botón cerrar

_screen.controlbox=.f. **// Desactiva los botones de control de la venta principal

do form acceso

read events

**// 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)

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:

debe crear un formulario con los siguientes objetos: Las propiedades para los objetos son: TEXT2 Enabled

Las propiedades para los objetos son:

TEXT2

Enabled = .f. Passwordchar = *

Procedimiento LOAD del FORM

BOTON ACEPTAR

Enabled = .f.

SET PATH TO DATOS,IMG,FORMULARIOS,PRG,MENUS,INFORMES set procedure to PROCEDIMIENTO

Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE

PUBLIC clave,entrar store spac(10) to clave,REPETIR

entrar=0

Desarrollo de Software II

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

Escuela Superior Franciscana Especializada en Ciencia y Tecnología ESFE AGAPE

_screen.visible = .t. thisform.release

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

Click command2 Cancelar

rele thisform Clear progra Clear memo Clear events Close databases Close all

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 más de experiencia trabajando en VFP sino para aquellos que se están iniciando en el fascinante mundo del desarrollo de software con Visual FoxPro. Saludos y hasta una nueva oportunidad.

El buen maestro solo puede enseñarte el camino al éxito, eres tu quien debe explorarlo

Elmer Galdámez