Documentos de Académico
Documentos de Profesional
Documentos de Cultura
VisualFox 9.0
VisualFox 9.0
ESFE AGAPE
Desarrollo de Software II
CAPITULO I
CREACI DE FORMULARIOS
DE MANTENIMIENTO
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
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.
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.
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
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
10
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
12
13
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
CAPITULO II
CREACI DE FORMULARIOS
DE BUSQUEDA
15
16
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
18
19
20
21
CAPITULO III
ENCRIPATAMIENTO
PARA SEGURIDAD
EN ACCESOS AL SISTEMA
22
23
OBJETO: FORM
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
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
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:
25
Objetos:
propiedad
valor de la propiedad
Txtcontrasea
Passwordchar
Text1 =
Passwordchar
PROCEDIMIENTO LOAD
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"
26
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
27
CAPITULO IV
CREACIN Y GENERADOR
DE MENS
28
Luego
29
Para eso tienes que subir de nivel en el formulario, seleccione barra de mens
30
Escribe.
Recuerda que tienes que subir de nivel en el formulario, seleccione barra de mens
Contina realizando que se muestra:
31
Generar...
(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
32
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
CAPITULO V
CREACIN Y
CONFIGURACION PARA
EL PROGRAMA PRINCIPAL
DE LA APLICACIN
34
set delete on
35
set refresh to 5
_screen.maxbutton=.f.
_screen.closable=.f.
_screen.controlbox=.f.
do form acceso
read events
BOTON ACEPTAR
Enabled = .f.
36
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
endif
if entrar=3
=messagebox("Limite de intentos agotados"+chr(13)+;
"El sistema se cerrar",16,"Error de ingreso")
thisform.command2.click
endif
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...
38