________________________________

Manual de VFP 5.0 y 6.0
Por Gilmer O. Manzano Mendoza
Parte III
________________________________

 

Introducción
Primeros pasos en programación
Diseño de Formularios
Declaración de Variables y otros
Diseño del Menú
Codificación


Introducción

En el desarrollo de este manual veremos los comandos básicos para poder realizar una operación determindada; nuestro actual proyecto estará mas orientado a la programación que a la POO (Programación Orientada a Objetos). Bueno espero que los dos manuales anteriores te hayan sido de mucha utilidad, pues este manual tiene un grado bastante alto de dificultad, pero espero le entiendas pues si estamos aca es porque has comprendido los dos manuales anteriores. Suerte amigo(a), estudia mucho y aprenderás muchas cosas interesantes de VFP.

Primeros pasos en programación
Comenzaremos a crear un formulario sencillo para luego crear un proyecto el más grande que se ha presentado en este manual hasta ahora, amigo(a), así que presiona Ctrl + n y luego escoge formulario nuevo (no utilices el asistente), vamos a realizar una operación sencillita como lo es una suma, ten paciencia verás que luego entraremos a hacer un proyecto que espero no te me vallas a correr, ok para ello utiliza tres labels, o etiquetas con los títulos de: número 1, numero 2 y resultado, luego colocales un textbox (cuadro de texto), a cada uno, marca text3 y en la propiedad enabled déjalo en .F.-falso, coloca un commandbottom o bóton de comando en la parte inferior derecha haz doble click y digita lo siguiente dentro del botón: thisform.text3.value = thisform.text1.value + thisform.text2.value; ahora sal de allí y text1, text2 y text3 los marcas y en la propiedad value el colocas el valor de: 0.000, ahora solo te queda guardar y ejecutar tu formulario bien ahora ya sabes como realizar un proceso númerico esto será muy útil para nuestro proyecto. Recuerda que text1, text2 y text3 son los names de los textbox pero tú los puedes cambiar por ejemplo si yo le coloco numero1 en la propiedad name del primer textbox entonces escribiría en código: Thisform.numero1.value, es sencillo ¿verdad?...

Diseño de Formularios
Debemos hacer un formulario que nos servirá como la parte principal de nuestro proyecto, sus medidas serán 569 de ancho (width) por 389 de alto (height); ahora declaremoslo como formulario de nivel superior (opción 2 del ShowWindows), desactivemos el botón de maximizar y colocale el título de "Sistema de potencias" a este formulario (recuerda todos estos cambios los realizas en las propiedades del formulario), ahora bien haz doble clic en cualquier parte del formulario y escribe esto: Do menup.mpr With This,.T. ahora presiona Ctrl + w dos veces la segunda vez te pedirá el nombre del formulario demosle el nombre de principal.scx ok, colocale texto como: "Sistema hecho por: <tu nombre> y alguna imagen a tu gusto, por ejemplo a mi me quedó así:


pero aún no hemos terminado recuerda esto si lo ejecutas te dará un error no te preocupes es normal ya que todavía no existe el menú, procedamos a crear el formulario de suma, haz un formulario sin utilizar el asistente, tendrá un tamaño de 428 por 291 su título en la barra de título será "Suma", desactivale el boton de maximizar, luego en ShowWindows déjalo en la opción "1 En formulario de nivel superior" ahora dirigete a la barra de controles de formularios, (imagen de abajo), no olvides activar el Autocenter (Sí aún tienes dudas de lo que hablo repasa el manual No. dos).
ahora crea 4 etiquetas con los nombres: "Digitos", "Exponentes", "Res. Exponentes" y "Resultado". También crea 10 cuadros de textos y dos botones con los títulos: "Calcular" y "Cerrar"; el nombre de este formulario será "suma.scx".
Esto te deberá quedar más o menos así:
A ti no te quedará así de desactivados cuatro cuadros de texto y la declaración de variables aún no la hemos hecho pero eso dejémoslo para el siguiente subtítulo por ahora crea tres formularios más para resta, multiplicación y división, para la resta y la división utilizarás unicamente 7 cuadros de texto es decir que asignaremos dos para "Digitos", dos para "Exponentes", dos para "Res. Exponentes" y uno para "Resultado" y por supuesto los dos botones: "Calcular" y "Cerrar"; Recuerda todo proyecto debe de tener autor(a) o autores por ello haz un formulario "acerca de..." y coloca los datos que tu creas conveniente; los nombres de los formularios serán:"resta.scx", "multipl.scx", "division.scx" y "acercade.scx".

Declaración de Variables y otros
Bien amigo(a) si sientes este manual un poco duro talvez sea porque no haz practicado lo suficiente con los manuales anteriores, te aconsejo de que tengas paciencia porque si bien ustedes me han pedido diseñar un proyecto complejo ahora yo los presiono a crear lo que me han pedido, ten paciencia este es el proyecto más grande hasta ahora, recuerda la persistencia hará de ti un gran programador.

Para empezar cierra todos los formularios y abre el formulario suma comenzaremos con este, para empezar haz clic en el primer cuadro de texto y en propiedades dale en la carpeta otros y luego busca la opción "name" y cambiale el nombre a "digit1" luego colocale el nombre de "digit2" y "digit3" a los siguientes cuadros de texto, este es como el nombre de la variable a utilizar ¿te parece?, escoge ahora otros tres cuadros de texto y colocales el nombre de "exp1", "exp2" y "exp3, ahora coloca el nombre de "resul1", "resul2" y result3 a otros 3 cuadros de texto y por último colocale el nombre de "resultado" al cuadro de texto restante. si tienes dudas dale una vista al formulario suma que se te presenta en este manual.

Ahora hecho esto haz clic en la ficha "Datos" escoge el primer cuadro de texto (digit1) y en ControlSource digita "Digit1" ahora busquemos la opción "Value" dentro de esta ficha y colocale el valor de "0.00000" esto significa que nuestro formulario podrá trabajar con 5 decimales creo que esto no da lugar a confusiones amigo(a) por lo tanto, imagino que vas comprendiendo repite estos pasos con cada uno de los siguientes cuadros de texto pero en los cuadros texto de exp1, exp2 y exp3 colocale en value "0" (cero) pues no puedes colocar un exponente de 5.264 por decirte algo, en el cuadro de texto resultado si dejale el valor de "0.00000" ahora debemos desactivar 4 cuadros de texto... ¿como hago esto...? es fácil para ello haz clic en la ficha "Todos" o en la ficha "Otros" en las propiedades busca la opción "Enabled" (signif. activado) colocalo en falso y ya lo tenemos desactivado esto lo harás solamente para los cuadros de texto como: "resul1", "resul2", "resul3" y "resultado"

Haz cada uno de estos pasos para el resto de formularios claro según sean el número de cuadros de texto existentes en ellos. ¿Complicado amigo(a)? si no entiendes por favor léelo de nuevo y prácticalo pues así lo podrás entender si te das por vencido hasta aquí entonces no serás capaz de hacer lo que falta que es la codificación para cada formulario; Si sientes que esto esta en chino o en árabe pues te explicare lo que acabamos de hacer ok los tres o dos cuadros desactivados (dependiendo del formulario) están desactivados porque en ellos vamos a transformar la cantidad con su respectivo exponente a un número real (es decir, una cantidad elevada a un determinado exponente es: resultado (que en este caso cualquier variable "Resul1", "Resul2" o "Resul3" dependiendo con la que se este trabajando) ahora el cuadro de texto resultado realizará una operación con las tres variables desactivadas (esta operación puede ser suma, resta, multiplicación o división dependiendo de el formulario en el que estaremos trabajando.

Diseño del Menú
En la creación del menú te daré pocos datos ya que imagino que esto es algo que ya dominas bien, así que solamente te dire que el menú lo debes hacer similar a esta figura:

Recuerda el código salir para un menú es un procedimiento el cual te lo enseñé en el proyecto anterior y el código para un botón salir en un formulario es distinto.
Codificación
Ahora hemos llegado a la parte más díficil y divertida si tú has logrado llegar hasta aca es porque tienes interés de aprender así, que adelante.

Comencemos con el botón más fácil elige el botón Cerrar del formulario Suma y escribe thisform.release() esto te permitirá cerrar el formulario pero no la aplicación completa ¿entiendes? es decir el formulario principal este no se cerrará, bien ahora necesitamos crear un nuevo método para ello haz clic en formulario y luego en "nuevo método" el nombre de este método será "calexpo" luego en "agregar" ahora cierra esta ventana vamos no esta díficil ahora haz doble clic en cualquier parte del formulario y aparecerá una ventana que dice: "objeto" y otra que dice: "procedimiento" en este último busca calexpo será el último de la lista pues es el que nosotros hemos creado, haz clic en él y a continuación escribiremos:
if exponente>0
if exponente=1
calculo=digito*10
endif
if exponente=2
calculo=digito*100
endif
if exponente=3
calculo=digito*1000
endif
if exponente=4
calculo=digito*10000
endif
if exponente=5
calculo=digito*100000
endif
endif

if exponente=0
calculo=digito
endif

if exponente<0
if exponente=-1
calculo=digito/10
endif
if exponente=-2
calculo=digito/100
endif
if exponente=-3
calculo=digito/1000
endif
if exponente=-4
calculo=digito/10000
endif
if exponente=-5
calculo=digito/100000
endif
endif

if r=1
thisform.resul1.value=calculo
endif

if r=2
thisform.resul2.value=calculo
endif

if r=3
thisform.resul3.value=calculo
endif

¿¿¿pero que significado tiene todo esto???, yo no quiero que tú estes en la luna con esto te voy a explicar si tú utilizas tú calculadora y digitas 5 exponente 3 tú resultado será 5000 (no lo confundas con 5 elevado al cubo que es 125); lo que sucede es que cuando utilizamos una candidad con un exponente uno se multiplica por 10 si el exponente es dos se multiplica por 100 y así sucesivamente pero cuando utilizamos cifras negativas sucede lo contrario es decir divisiones exponente uno te divide la cantidad entre 10 un exponente 2 te divide la cantidad entre 100 y así sucesivamente nosotros para no hacer esto tan largo lo hemos realizado solamente tomando cinco cifras.

¿...y las variables calculo, r, digito y exponente de donde las sacamos acaso fue magia? bien, te comenzare a decir que estamos utilizando variables públicas o variables globales como se conocen en otros lenguajes de programación como en Pascal 7.0, sé que con esto es poco lo que te aclaro, pero luego te explicare mejor mi objetivo ahorita es explicarte el comando if, este es fácil de entender pues en español significa "Si «variable»«comparar»«condición» entonces has esto" un ejemplo es: if exponente<0 esto significa si exponente es menor que cero entonces hacer, espero que entiendas en nuestro ejemplo tenemos otro if lo que significa que estamos trabajando con if anidados, pues existen los if anidados y los if simples o secuenciales.

hay tres if que son los principales, ellos son: el if exponente>0, if exponente=0 y if exponente<0 de aquí dependen los demás if. Ahora bien volvamos con nuestras variables públicas que estamos utilizando pero que aún NO hemos declarado para hacerlo has clic en cualquier parte del formulario suma (en la ventana y no en los boxtext o en los commandbottons o botones de comandos), una vez aquí dentro búsquemos el procedimiento Init que es inicio aquí las declararemos de la siguiente manera:

public resul1,resul2,resul3
public digit1,digit2,digit3
public exp1,exp2,exp3
public r
public exponente,digito,calculo

store 0.000 to resul1,resul2,resul3,digit1,digit2,digit3,calculo,digito
store 0 to exp1,exp2,exp3,exponente

...¿con dudas? :< es normal no te preocupes la principal pregunta que tú tendrás es ¿y para qué voy a utilizar variables públicas?... Trataré de explicartelo bien imaginate que tenemos 3 cajas A, B, C (que serían los nombres de las cajas o variables), ahora en la caja A almaceno documentos, luego la caja B los extrae de la caja A para procesarlos en la caja C donde quedarán los documentos perfeccionados para realizar esto las variables deben tener relación entre sí por ello se dice que son públicas (ya que aunque están las variables declaradas en formas distintas en el proyecto tienen relación), pero en este programa ¿Dónde paso la información de la Caja A a la caja B?, será tu pregunta verdad genio(a)?, pues bien hemos realizado un poco de esta transferencia cuando digitamos anteriormente:
if r=1
thisform.resul1.value=calculo
Pero r es el equivalente a result1 (o dependiendo de la caja en que se haga el calculo como result2 o result3), pero no hemos hecho aún el paso de los dígitos y los exponentes para calcularlos para ello debemos escribir el siguiente código fuente dentro del botón calcular ya que lo necesitamos:
r=1
exponente=thisform.exp1.value
digito=thisform.digit1.value
this.parent.calcexpo
thisform.refresh
r=2
exponente=thisform.exp2.value
digito=thisform.digit2.value
this.parent.calcexpo
thisform.refresh
r=3
exponente=thisform.exp3.value
digito=thisform.digit3.value
this.parent.calcexpo
thisform.refresh
resultado=resul1+resul2+resul3
thisform.refresh
Bien este texto es para suma en la resta solamente utilizaremos la variable r para result1 y result2 por lo que resultado=resul1-resul2 para la división será también result1 y result2 y quedará en el proceso r=2. La pregunta ahora es: ¿por qué utilizo variables públicas cuando puedo hacerlo directamente?, si piensas esto tienes toda la razón bien te diré la principal razón el objetivo de usar variables públicas es a veces como en nuestro caso para ahorrar tanto código fuente por ejemplo, nosotros utilizamos el procedimiento calexpo el cual es llamado constantemente con la instrucción: this.parent.calcexpo, este procedimiento nos permite ahorrar mucho pero mucho código fuente pues si tu eres curioso y tratarás de hacerlo normalmente o sin la utilización de variables públicas y sin procedimiento te darás cuenta de que el código contenido en calexpo se tendría que repetir para cada uno de los res. exponentes: (los tres textbox desactivados en el formulario en el caso de la suma), (luego calcular estos en resultado un textbox desactivado) y como son 4 operaciones (suma, resta, multipl. y división), teniendo en la suma y multiplicación tres cálculos y dos en la resta y división entonces estamos diciendo que este proceso se repetiría 2 o 3 veces por formulario, cuando utilizando un procedimiento y variables públicas se hace una sola vez por cada formulario de las operaciones entonces podemos ver que el sistema se hace más corto y efectivo.

Ahorita te explico el código del commandbotton calcular bien igualamos primero r = 1 eso lo hago por que utilizaré tres respuestas en este formulario y por ello cuando r = 1 exponente será igual a exp1 y digito será igual a digit1 con estos datos llamamos al procedimiento calcexpo, alli al final encontramos tres if el primero es r = 1 recuerda este valor se lo damos nosotros a "r" para calcular el primer resultado luego que se realizan los cálculos, notamos que resul1 es igual a la variable calculo y con esto tenemos la primer respuesta, (calculo es la variable que nos procesa la cantidad con su exponente a entero) regresamos al commandbottom y observamos que r = 2; exponente = exp2 y digito = digit2 se llama al procedimiento calcexpo nuevamente nos calcula el segundo resultado luego hace lo mismo con el tercero una vez calculado los tres resultados el commandbottom calcular hace esto: resultado = resul1 + resul2 + resul3 con esto encontramos la respuesta final o calculo de toda la operación; no es muy díficil de entender verdad amigo(a), lo único que tienes que hacer es usar tu imaginación para ingeniartelas programando, a medida vallas aprendiendo tu imaginación se desarrollará más y podrás crear incluso aplicaciones complejas, asi que suerte :).

Si quieres descargar este manual entonces,has clic aquí si deseas descargar el proyecto explicado en este ejemplo has clic aquì.

Nota del ejemplo: el ejemplo es un archivo comprimido para descomprimirlo te recomiendo que lo descomprimas en la raíz de la unidad C de tu disco duro pues si le das otra ruta entonces no te funcionará a menos que modifiques las rutas de las llamadas a formularios; ...y no te preocupes ya que el proyecto esta dentro de un directorio así que no pienses que los archivos te quedarán regados en tu disco duro. En cuanto al manual este si te recomiendo descomprimirlo en una capeta de lo contrario los varios archivos que contiene te quedarán regados en tu disco duro.

Notas:

  • Esta información tú la puedes distribuir a tus amigos totalmente gratis pues su distribución es gratis no puedes lucrarte de esta información.
  • No puedes modificar la información detallada en este manual en caso de haber
  • No puedes modificar la información detallada en este manual en caso de haber házmelos saber y así poder corregirlos.
  • No debes borrar el nombre de autor pues, estarías violando los derechos de autor y a la vez estarías quitándole mérito al creador de este manual de VFP.
  • Cualquier Observación, crítica, felicitación, duda, consulta o sugerencia, favor hazla a las direcciones de correo electrónico siguientes: [email protected] e [email protected] .

    Autor: Gilmer O. Manzano Mendoza.
    La Unión, El Salvador C.A.
    Copyright (c) Enero – Diciembre del 2000.