Está en la página 1de 38

Escuela Superior Franciscana Especializada en Ciencia y Tecnologa

ESFE AGAPE
Desarrollo de Software II

CAPITULO I
CREACI DE FORMULARIOS
DE MANTENIMIENTO

Catedrtico: Josu El Quijada

Escuela Superior Franciscana Especializada en Ciencia y Tecnologa


ESFE AGAPE
Desarrollo de Software II

Manual de Programacin en Visual Fox Pro 9.0


En este manual se muestra la forma bsica de programar formularios utilizando variables de
memoria.
Se tomarn como base unas tablas que en realidad no cumplen los requisitos bsicos para
una base de datos, sin embargo se tomaran como ejemplo por razones didcticos, 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:\

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

que son

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

Catedrtico: Josu El Quijada

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

Catedrtico: Josu El Quijada

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.

Catedrtico: Josu El Quijada

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:

Catedrtico: Josu El Quijada

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

Catedrtico: Josu El Quijada

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

Y el segundo grupo lo llamaremos BOTONES AUXILIARES

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

Catedrtico: Josu El Quijada

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

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)

Catedrtico: Josu El Quijada

Escuela Superior Franciscana Especializada en Ciencia y Tecnologa


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)

Catedrtico: Josu El Quijada

Escuela Superior Franciscana Especializada en Ciencia y Tecnologa


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 opcin BUILDER (generador). Para podamos elegir la procedencia y distribucin de los
registros.

Catedrtico: Josu El Quijada

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.

Catedrtico: Josu El Quijada

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

EVENTO KEYPRESS DEL TEXT1 DEL GRID


Si presionamos ENTER dentro del grid ejecuta el mtodo que creamos anteriormente llamado ENTER y La
BARRA ESPACIADORA ejecuta una bsqueda 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 todava. 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.

Catedrtico: Josu El Quijada

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.

Catedrtico: Josu El Quijada

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.

EVENTO VALID DEL TEXT2 (NOMBRE)

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

HEMOS TERMINADO CON EL FORM DE MANTENIMIENTO

Catedrtico: Josu El Quijada

14

Escuela Superior Franciscana Especializada en Ciencia y Tecnologa


ESFE AGAPE
Desarrollo de Software II

CAPITULO II
CREACI DE FORMULARIOS
DE BUSQUEDA

Catedrtico: Josu El Quijada

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.

Catedrtico: Josu El Quijada

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

Catedrtico: Josu El Quijada

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.

Catedrtico: Josu El Quijada

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.

Catedrtico: Josu El Quijada

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.

EVENTO DBLCLICK DEL TEXT1 DEL GRID

EVENTO CLICK DEL BOTON CANCELAR


Thisform.release (copy, paste)

EVENTO CLICK DEL BOTON CANCELAR

Catedrtico: Josu El Quijada

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.

Catedrtico: Josu El Quijada

21

Escuela Superior Franciscana Especializada en Ciencia y Tecnologa


ESFE AGAPE
Desarrollo de Software II

CAPITULO III
ENCRIPATAMIENTO
PARA SEGURIDAD
EN ACCESOS AL SISTEMA

Catedrtico: Josu El Quijada

22

Escuela Superior Franciscana Especializada en Ciencia y Tecnologa


ESFE AGAPE
Desarrollo de Software II

Como Encriptar Claves a travs de procedimientos


Para Encriptar claves se debe crear un programa que realice la encriptacin, 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


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.

Catedrtico: Josu El Quijada

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

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.

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

Catedrtico: Josu El Quijada

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

Tipo

Ancho

Nombre
Nivel
Login
Contrasea

Carcter
Carcter
Carcter
Carcter

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

Catedrtico: Josu El Quijada

25

Escuela Superior Franciscana Especializada en Ciencia y Tecnologa


ESFE AGAPE
Desarrollo de Software II
Name = Boton
Name = Bcancelar
Name = Bsalir

Objetos:

propiedad

valor de la propiedad

Txtcontrasea

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

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

if !empty(ThisForm.txtNombre.value)and !empty(ThisForm.combo1.value)and;
!empty(ThisForm.txtcontrasea.value)

select usuario
APPEND BLANK
GATHER MEMVAR
thisform.setall("enabled",.f.,"textbox")
thisform.combo1.enabled=.f.
this.caption = "\<Nuevo"
this.picture = "wznew.bmp"

Catedrtico: Josu El Quijada

26

Escuela Superior Franciscana Especializada en Ciencia y Tecnologa


ESFE AGAPE
Desarrollo de Software II

else
guardar")

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

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 = "\<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

Catedrtico: Josu El Quijada

27

Escuela Superior Franciscana Especializada en Ciencia y Tecnologa


ESFE AGAPE
Desarrollo de Software II

CAPITULO IV
CREACIN Y GENERADOR
DE MENS

Catedrtico: Josu El Quijada

28

Escuela Superior Franciscana Especializada en Ciencia y Tecnologa


ESFE AGAPE
Desarrollo de Software II
CREAR MENUS
Ahora vamos a crear el men

Luego

Visualizamos la siguiente ventana

Prompt palabra en ingles que significa Indicador


Result Significa Accin resultado (la tomaremos como accin)
Options significa opciones

Catedrtico: Josu El Quijada

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

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 mens

Catedrtico: Josu El Quijada

30

Escuela Superior Franciscana Especializada en Ciencia y Tecnologa


ESFE AGAPE
Desarrollo de Software II

Entonces realiza lo que a continuacin de se muestra

Escribe.

Ahora creamos el submen para Salir

Recuerda que tienes que subir de nivel en el formulario, seleccione barra de mens
Contina realizando que se muestra:

Catedrtico: Josu El Quijada

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

Catedrtico: Josu El Quijada

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:

Catedrtico: Josu El Quijada

33

Escuela Superior Franciscana Especializada en Ciencia y Tecnologa


ESFE AGAPE
Desarrollo de Software II

CAPITULO V
CREACIN Y
CONFIGURACION PARA
EL PROGRAMA PRINCIPAL
DE LA APLICACIN

Catedrtico: Josu El Quijada

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

**//Desactiva la barra de mens de Fox durante la ejecucin 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 Ao

set echo off

**//Cierra la ventana Seguimiento

set notify off

**// Desactiva la presentacin de algunos mensajes del sistema.

**//muestra o no un cuadro de dilogo antes de sobrescribir un archivo existente

Catedrtico: Josu El Quijada

35

Escuela Superior Franciscana Especializada en Ciencia y Tecnologa


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 Didctico - Desarrollo de Software -ITSO-"


_screen.windowstate=2

**// Abre la venta de forma maximizada

_screen.maxbutton=.f.

**// Desactiva el botn maximizar de la ventana

_screen.closable=.f.

**// Desactiva el botn 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 continuacin 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

Catedrtico: Josu El Quijada

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

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(contrasea)=alltr(clave)
if !found()
=messagebox ("Error: Usuario o Contrasea 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

Catedrtico: Josu El Quijada

37

Escuela Superior Franciscana Especializada en Ciencia y Tecnologa


ESFE AGAPE
Desarrollo de Software II
_screen.visible = .t.
thisform.release

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 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.
El buen maestro solo puede ensearte el camino al xito, eres tu quien debe explorarlo

Elmer Galdmez...

Catedrtico: Josu El Quijada

38

También podría gustarte