You are on page 1of 59

MICROSOFT VISUAL FOXPRO

NIVEL I

INTRODUCCIN A LA PROGRAMACIN

INTRODUCCIN

La presente Gua de Laboratorio, se elabor con la finalidad de complementar la parte terica con la parte prctica del curso. Contiene una gran variedad de ejemplos prcticos . Desde ya les deseo la mejor de las suertes en el aprendizaje de Microsoft Visual FoxPro. Lima, Setiembre del 2002

Microsoft

Visual FoxPro

GUA DE LABORATORIO N 1 Objetivos Luego de completar este laboratorio, el estudiante ser capaz de:

Identificar los elementos del entorno integrado de desarrollo de Microsoft Visual FoxPro 6.0. Implementar soluciones mediante programacin clsica. Declarar y asignar valores tanto a las variables de memoria como a los arreglos. Analizar como es el flujo de control de un programa. Crear funciones y procedimientos definidos por el usuario.

Consideraciones Para el desarrollo del presente laboratorio Ud. deber crear una carpeta C:\FundVFP\Lab1, para guardar sus trabajos correspondientes a este laboratorio. Aplicacin N 1 En este primer ejercicio vamos a escribir un programa que lea tres nmeros enteros y determine el nmero mayor, el nmero central y el nmero menor. Debemos asumir que los tres nmeros son siempre distintos. Para el desarrollo de la presente aplicacin ingresar a Microsoft Visual FoxPro. En la Ventana de Comandos digite la siguiente orden: Modify Command Aplica01

A continuacin se debe presentar el Editor de programas. En dicha ventana proceda a ingresar el cdigo que se indica: Close All Clear Input "Ingrese el valor de A?" To nA Input "Ingrese el valor de B?" To nB Input "Ingrese el valor de C?" To nC If nA > nB Then nMay = nA nMen = nB Else nMay = nB nMen = nA EndIf If nC > nMay Then nCen = nMay nMay = nC Else If nC > nMen Then nCen = nC Else nCen = nMen

nMen = nC EndIf EndIf ? "Mayor =" + Str(nMay) ? "Central =" + Str(nCen) ? "Menor =" + Str(nMen) Para ejecutar su programa dar click en el botn Ejecutar (!) de la Barra de herramientas Estndar. Para volver a ejecutar su programa digitar la siguiente orden desde la Ventana de Comandos: Do Aplica01 Aplicacin N 2 Un restaurante ofrece un descuento del 10% para consumos entre S/. 30.00 y S/. 50.00; un descuento del 20% para consumos mayores a S/. 50.00 nuevos soles; para todos los dems casos no se aplica ningn tipo de descuento. El ejercicio consiste en elaborar una programa que permita determinar el importe a pagar por el consumidor. Para el desarrollo de la presente aplicacin abrir una nueva ventana de edicin e ingresar el siguiente cdigo: Close All Clear Do While .T. Input "Consumo S/." To nConsumo If Type ("nConsumo") = "N" Exit

EndIf EndDo Do Case Case nConsumo >= 30 And nConsumo <= 50 nImporte = nConsumo * 0.9 Case nConsumo > 50 nImporte = nConsumo * 0.8 Otherwise nImporte = nConsumo EndCase ? "Importe a pagar S/." + Str(nImporte) Aplicacin N 3 El ejercicio consiste en escribir un programa que lea " " enteros y calcule la suma total, la media aritmtica, el mximo y el mnimo de los datos. Para el desarrollo de la presente aplicacin, de manera anloga que para los casos anteriores abrir una nueva ventana de edicin e ingresar el siguiente cdigo: Close All Clear Input "Ingrese cantidad de nmeros?" To nN Declare aVector(nN) For nI = 1 To nN Input "Nmero [" + Str(nI) + "]?" To aVector(nI) Next

nMax = aVector[1] nMin = aVector[1] nSuma = 0 For nI = 1 To nN nSuma = nSuma + aVector[nI] If aVector[nI] > nMax Then nMax = aVector[nI] EndIf If aVector[nI] < nMin Then nMin = aVector[nI] EndIf Next nMedia = nSuma / nN ? "Suma =" + Str(nSuma) ? "Media =" + Str(nMedia, 10, 2) ? "Mximo=" + Str(nMax) ? "Mnimo=" + Str(nMin) Aplicacin N 4 A continuacin vamos a escribir una funcin que reciba como argumento de entrada una cadena de caracteres y la devuelva en forma inversa, por ejemplo si se ingresa la cadena CORAZON deber retornar NOZAROC. Para el desarrollo de esta aplicacin proceda de manera similar a los casos anteriores e ingresar el cdigo que se muestra:

Close All Clear Accept "Ingrese una cadena?" To cCadena ? "Cadena invertida =" + CadInv(cCadena) Function CadInv Parameters cCadena nN = Len(Alltrim(cCadena)) Declare cTemporal(nN) For nI = 1 To nN cTemporal(nI) = SubStr(cCadena, nI, 1) Next cInvertida = "" For nJ = nN To 1 Step -1 cInvertida = cInvertida + cTemporal(nJ) Next J Return cInvertida Aplicacin N 5 Este ejercicio consiste en escribir un programa que imprima el calendario correspondiente a un mes si se conoce una fecha del mismo. Por ejemplo si se ingresa la siguiente fecha MA 24 04 1973 (Martes 24 de Abril de 1973) se debe obtener:
ABRIL D L M M J V S

1 8 15 22 29

2 9 16 23 30

3 10 17 24

4 11 18 25

5 12 19 26

6 13 20 27

7 14 21 28

Creo que a estas alturas Ud. ya entendi como funciona esto. Por ello, esta aplicacin se deja como ejercicio para el estudiante.

Microsoft

Visual FoxPro

GUA DE LABORATORIO N 2 Objetivos Luego de completar este laboratorio, el estudiante ser capaz de:

Implementar soluciones mediante programacin orientada a objetos. Manejar las diferentes propiedades y eventos del formulario. Aadir controles a un formulario. Establecer las propiedades de los controles. Trabajar con procedimientos de eventos.

Consideraciones Para el desarrollo del presente laboratorio Ud. deber crear una carpeta C:\FundVFP\Lab2, para guardar sus trabajos correspondientes a este laboratorio. Aplicacin N 1 El ejercicio consiste en elaborar una aplicacin que permita leer un nmero real de la forma "eee.ddd" e imprima el mayor valor entre la parte entera y la parte decimal.

Para el desarrollo de esta aplicacin, en primer lugar debe crear un nuevo formulario. Para ello digite lo siguiente en la Ventana de Comandos: Create Form A continuacin seleccione del Men Ver, la opcin Barra de herramientas Controles de Formularios. Se presentar una ventana similar a la siguiente figura:

En seguida de la barra de herramientas mostrada ubicar los siguientes controles al formulario: 2 etiquetas 2 cajas de texto 3 botones de comando Para ubicar un control en el formulario, simplemente dar click en el control deseado y luego dar click en el formulario en la posicin que se le desea ubicar. Adicionalmente puede utilizar la barra de herramientas Diseo para obtener una mejor presentacin.

A continuacin proceda a establecer las propiedades de los objetos segn se indica, para ello dar click derecho sobre el control y del men emergente que se presenta elegir la opcin Propiedades. Form1
Name Caption MaxButton MinButton FrmAplica01 Mayor valor de un nmero real .F.-Falso .F.-Falso

Label1
Name Caption LblX Ingrese un real de la forma eee.ddd?

Label2
Name Caption LblMay Mayor:

Text1
Name InputMask Value TxtX 999.999 0

Text2
Name InputMask Value TxtMay 999 0

Command1

Name Caption Default

CmdAceptar \<Aceptar .T.-Verdadero

Command2
Name Caption CmdLimpiar \<Limpiar

Command3
Name Cancel Caption CmdSalir .T.-Verdadero \<Salir

A continuacin dar doble click sobre el control CmdAceptar y proceda a ingresar el cdigo que se muestra:
Objeto: CmdAceptar Procedimiento: Click

nX = Thisform.TxtX.Value nA = Int(Thisform.TxtX.Value) nX = nX - nA nB = 1000 * nX If nA > nB Then nMay = nA Else nMay = nB EndIf Thisform.TxtMay.Value = nMay

Thisform.Refresh De manera anloga ingresar el siguiente cdigo para el control CmdLimpiar:


Objeto: CmdLimpiar Procedimiento: Click

Thisform.TxtX.Value = 0 Thisform.TxtMay.Value = 0 Thisform.TxtX.Setfocus Thisform.Refresh Finalmente proceder a ingresar el siguiente cdigo para el control CmdSalir:
Objeto: CmdSalir Procedimiento: Click

Release Thisform A continuacin guarde su aplicacin como FrmAplica01, luego proceda a ejecutarla. Para ello ingrese lo siguiente en la Ventana de Comandos: Do Form FrmAplica01 Debe funcionar sin problemas. Pruebe ingresando diferentes valores. En caso que falle revise y corrija. Aplicacin N 2 En este ejercicio vamos a crear un formulario para calcular la edad de una persona a partir de su fecha de nacimiento.

Para el desarrollo de esta aplicacin, proceda a ubicar los siguientes controles en el formulario: 2 etiquetas 2 cajas de texto 3 botones de comando Luego, proceda a establecer las propiedades segn se indica a continuacin: Form1
Name Caption MaxButton MinButton .F.-Falso .F.-Falso FrmEdad

Label1
Name Caption LblFecNac Fecha de nacimiento:

Label2
Name Caption LblEdad Su edad es:

Text1
Name Enabled TxtFecNac .T.-Verdadero

Text2
Name Enabled TxtEdad .F.-Falso

Command1
Name Caption CmdAceptar \<Aceptar

Command2
Name Caption CmdLimpiar \<Limpiar

Command3
Name Caption CmdSalir \<Salir

Luego de establecidas las propiedades de los controles, proceda a ingresar el siguiente cdigo:
Objeto: FrmEdad Procedimiento: Load

Set Date French Set Century On


Objeto: FrmEdad Procedimiento: Init

cNomDia = Cdow(Date()) cDia = Str(Day(Date()), 2) cMes = Cmonth(Date()) cAnno = Str(Year(Date()), 4) cFecha = cNomDia + " " + cDia + " de " + cMes + " del " + cAnno Thisform.Caption = cFecha Thisform.TxtFecNac.Setfocus

Thisform.Refresh
Objeto: CmdAceptar Procedimiento: Click

dFecNac = Ctod(Thisform.TxtFecNac.Value) nEdad = Int ((Date() - dFecNac) / 365) Thisform.TxtEdad.Value = Str(nEdad) + " aos" Thisform.Refresh
Objeto: CmdLimpiar Procedimiento: Click

Thisform.TxtFecNac.Value = "" Thisform.TxtEdad.Value = "" Thisform.TxtFecNac.Setfocus Thisform.Refresh


Objeto: CmdSalir Procedimiento: Click

Release Thisform Aplicacin N 3 Este ejercicio consiste en elaborar un formulario que simule el funcionamiento de un reloj despertador digital. La aplicacin debe permitir al usuario ingresar la hora a la que desea ser avisado. El diseo de la interfaz debe ser similar a la figura siguiente:

Para el desarrollo de esta aplicacin proceder a ubicar los siguientes controles en el formulario: 2 etiquetas 2 cajas de texto 1 cronmetro 2 botones de comandos En seguida establezca las propiedades segn se indica a continuacin: Form1
Name Caption MaxButton MinButton FrmReloj Reloj despertador digital .F.-Falso .F.-Falso

Label1
Name Caption LblHora Hora

Label2

Name Caption

LblDespertador Despertador

Text1
Name FontBold FontSize TxtHora .T.-Verdadero 24

Text2
Name FontBold FontSize TxtDespertador .T.-Verdadero 24

Timer1
Name Enabled Interval Timer1 .T.-Verdadero 500

Command1
Name Caption Default CmdOnOff \<Desactivar .T.-Verdadero

Command2
Name Cancel Caption CmdTerminar .T.-Verdadero \<Terminar

Una vez establecidas las propiedades, proceda a ingresar el cdigo que se muestra:

Objeto: FrmReloj

Procedimiento: Load

Public lOnOff
Objeto: FrmReloj Procedimiento: Init

lOnOff = .F. Thisform.TxtDespertador.Value = "00:00:00" Thisform.Refresh


Objeto: Timer1 Procedimiento: Timer

If Thisform.TxtHora.Value != Time() Then Thisform.TxtHora.Value = Time() EndIf If (Thisform.TxtDespertador.Value < Time()) And lOnOff Then * Sonido acstico ?Chr(7) EndIf Thisform.Refresh
Objeto: CmdOnOff Procedimiento: Click

If lOnOff Then lOnOff = .F. Thisform.CmdOnOff.Caption = "\<Activar" Else lOnOff = .T.

Thisform.CmdOnOff.Caption = "\<Desactivar" EndIf Thisform.Refresh


Objeto: CmdTerminar Procedimiento: Click

Release Thisform Aplicacin N 4 Se tiene un cajero automtico el cual permite manipular cierta cantidad de dinero para lo cual dispone de los siguientes billetes: S/. 10.00, S/. 20.00, S/. 50.00, S/. 100.00 y S/. 200.00. Elaborar una aplicacin que permita la lectura de la cantidad a retirar la cual debe ser mltiplo de 10 (caso contrario debe solicitar al usuario que ingrese un valor correcto, no debe aceptar la lectura de valores que no cumplan esta condicin). La aplicacin debe indicar el menor nmero de billetes a utilizar. El diseo de la interfaz debe ser similar a la siguiente figura:

Microsoft

Visual FoxPro

GUA DE LABORATORIO N 3 Objetivos

Luego de completar este laboratorio, el estudiante ser capaz de:


Manejar las diferentes propiedades y mtodos del conjunto de formularios. Identificar y utilizar los controles estndar adicionales. Utilizar cajas de dilogo predefinidas para visualizar mensajes.

Consideraciones Para el desarrollo del presente laboratorio Ud. deber crear una carpeta C:\FundVFP\Lab3, para guardar sus trabajos correspondientes a este laboratorio. Aplicacin N 1 El ejercicio consiste en crear una aplicacin que permita leer una fraccin y de como resultado la fraccin simplificada. Esto es, que halle la fraccin irreductible equivalente.

Para el desarrollo de esta aplicacin proceda a crear un nuevo formulario y luego vaya al Men Formulario y elija la opcin Crear conjunto de formularios (no se preocupe, pues no se apreciar nada en especial). Nuevamente vaya al Men Formulario y elija la opcin Agregar nuevo formulario. El Diseador de formularios debe presentar una apariencia similar a la figura mostrada:

A continuacin proceda a ubicar los siguientes controles sobre el primer formulario (Form1): 2 etiquetas 2 cajas de texto 2 botones de comando Seguidamente debe establecer las propiedades de los objetos segn se indica: Form1
Name Caption MaxButton MinButton FrmIngreso Ingreso de datos .F.-Falso .F.-Falso

Label1

Name Caption

LblNumerador Numerador?

Label2
Name Caption LblDenominador Denominador?

Text1
Name Value TxtNumerador 0

Text2
Name Value TxtDenominador 0

Command1
Name Caption Default CmdSimplificar Simplificar .T.-Verdadero

Command2
Name Cancel Caption CmdSalir .T.-Verdadero Salir

A continuacin proceda a ingresar el cdigo que se muestra:


Objeto: CmdSimplificar Procedimiento: Click

nNumerador = Thisformset.FrmIngreso.TxtNumerador.Value

nDenominador = Thisformset.FrmIngreso.TxtDenominador.Value If nNumerador < nDenominador Then nC = nNumerador Else nC = nDenominador EndIf Do While (nNumerador % nC != 0) Or (nDenominador % nC != 0) nC = nC - 1 EndDo nNumerador = nNumerador / nC nDenominador = nDenominador / nC Thisformset.FrmIngreso.Hide Thisformset.FrmSalida.Show Thisformset.Refresh
Objeto: CmdSalir Procedimiento: Click

Release Thisformset Luego proceda a ubicar los siguientes controles sobre el segundo formulario (Form2): 1 etiqueta 1 caja de texto 1 botn de comando Seguidamente debe establecer las propiedades de los objetos segn se indica:

Form2
Name Caption MaxButton MinButton FrmSalida Salida .F.-Falso .F.-Falso

Label1
Name Caption LblFraccion Fraccin simplificada:

Text1
Name Alignment TxtFraccion 2-Centro

Command1
Name Caption CmdVolver Volver

A continuacin proceda a ingresar el cdigo que se muestra:


Objeto: FrmSalida Procedimiento: Activate

cNumerador = Str(nNumerador) cDenominador = Str(nDenominador) cFraccion = cNumerador + " / " + cDenominador Thisformset.FrmSalida.TxtFraccion.Value = cFraccion Thisformset.Refresh
Objeto: CmdVolver Procedimiento: Click

Thisformset.FrmSalida.Hide Thisformset.FrmIngreso.Show Thisformset.Refresh Finalmente proceda a ingresar el cdigo que se indica a continuacin:
Objeto: Formset1 Procedimiento: Load

Public nNumerador Public nDenominador Public nC


Objeto: Formset1 Procedimiento: Init

Thisformset.FrmSalida.Hide Thisformset.Refresh Aplicacin N 2 Este ejercicio consiste en elaborar una aplicacin que acepte fechas como tres nmeros (dd, mm, aaaa) y las visualice del modo usual. A manera de ejemplo considere lo siguiente:

Cuando el usuario haga click en el botn Salir o en el botn Cerrar de la barra de ttulo del formulario, se debe confirmar si desea terminar la aplicacin, tal como se observa en la figura siguiente:

En caso de que el usuario elija la opcin Si, la aplicacin debe terminar. Caso contrario, es decir si el usuario elige la opcin No, se debe proseguir con la aplicacin. Para el desarrollo de esta aplicacin, proceda a ubicar los siguientes controles en el formulario: 4 etiquetas 3 controles numricos 1 caja de texto 3 botones de comando En seguida proceda a establecer las propiedades segn se indica: Form1
Name Caption MaxButton MinButton FrmFecha Fecha en letras .F.-Falso .F.-Falso

Label1
Name AutoSize Caption LblDia .T.-Verdadero Da:

Label2
Name AutoSize Caption LblMes .T.-Verdadero Mes:

Label3
Name AutoSize Caption LblAnno .T.-Verdadero Ao:

Label4
Name AutoSize Caption LblEnLetras .T.-Verdadero En letras:

Spinner1
Name SpinnerHighValue SpinnerLowValue SpnDia 31 1

Spinner2
Name SpinnerHighValue SpinnerLowValue SpnMes 12 1

Spinner3
Name SpinnerHighValue SpnAnno 9999

SpinnerLowValue

Text1
Name Alignment TxtEnLetras 2-Centro

Command1
Name Caption Default CmdAceptar \<Aceptar .T.-Verdadero

Command2
Name Caption CmdLimpiar \<Limpiar

Command3
Name Cancel Caption CmdSalir .T.-Verdadero \<Salir

Una vez establecidas las propiedades proceda a ingresar el cdigo que se indica a continuacin:
Objeto: FrmFecha Procedimiento: Load

Set Date French Set Century On


Objeto: FrmFecha Procedimiento: QueryUnload

#DEFINE vfpYesNo 4

#DEFINE vfpYes 6 #DEFINE vfpQuestion 32 If MessageBox("Desea terminar la aplicacin?", ; vfpQuestion + vfpYesNo, "Pregunta") = vfpYes Then Release Thisform Else NoDefault EndIf
Objeto: CmdAceptar Procedimiento: Click

cBarra = "/" cFecha = Thisform.SpnDia.Text + cBarra + Thisform.SpnMes.Text ; + cBarra + Thisform.SpnAnno.Text dFecha = Ctod(cFecha) cNomDia = Cdow(dFecha) cDia = Str(Day(dFecha), 2) cMes = Cmonth(dFecha) cAnno = Str(Year(dFecha), 4) cFecha = cNomDia + " " + cDia + " de " + cMes + " de " + cAnno Thisform.TxtEnLetras.Value = cFecha Thisform.Refresh
Objeto: CmdLimpiar Procedimiento: Click

Thisform.SpnDia.Value = 0 Thisform.SpnMes.Value = 0 Thisform.SpnAnno.Value = 0 Thisform.TxtEnLetras.Value = "" Thisform.SpnDia.Setfocus Thisform.Refresh


Objeto: CmdSalir Procedimiento: Click

Thisform.QueryUnload Aplicacin N 3 Este ejercicio consiste en elaborar un formulario que permita leer un nmero entero y visualice su tabla se multiplicar. Para construir la tabla de multiplicar vamos a utilizar un control cuadro de edicin, el cual tiene propiedades similares a un cuadro de texto, pero permite escribir texto en lneas diferentes.

Para el desarrollo de esta aplicacin, proceda a ubicar los siguientes controles en el formulario: 1 etiqueta

1 caja de texto 1 cuadro de edicin 1 botn de comandos En seguida proceda a establecer las propiedades segn se indica: Form1
Name Caption MaxButton MinButton FrmTabla Tabla de multiplicar .F.-Falso .F.-Falso

Label1
Name Caption LblNumero Ingrese un nmero:

Text1
Name Alignment TxtNumero 2-Centro

Edit1
Name ScrollBars EdtTabla 2-Vertical

Command1
Name Caption Default CmdLimpiar \<Limpiar .T.-Verdadero

Una vez diseada la interfaz, proceda a ingresar el cdigo que se indica a continuacin:
Objeto: TxtNumero Procedimiento: InteractiveChange

nN = Val(Thisform.TxtNumero.Value) cS = "" For nI = 0 To 12 nP = nN * nI cS = cS + Str(nN) + " * " + Str(nI) + " = " + Str(nP) ; + Chr(13) Next Thisform.EdtTabla.Value = cS Thisform.Refresh
Objeto: CmdLimpiar Procedimiento: Click

Thisform.TxtNumero.Value = "" Thisform.EdtTabla.Value = "" Thisform.Refresh Aplicacin N 4 Elaborar una aplicacin que acepte como entrada la reserva de agua de un depsito y los litros que se consumen a la semana. La aplicacin debe dar como resultado las cantidades de agua que quedan al final de cada semana. El proceso finalizar cuando no quede agua suficiente para una semana. Utilizar otro formulario para mostrar la salida. El diseo de la interfaz debe ser similar a la figura mostrada:

Microsoft

Visual FoxPro

GUA DE LABORATORIO N 4 Objetivos Luego de completar este laboratorio, el estudiante ser capaz de:

Usar casillas de verificacin y botones de opcin para alternar entre uno o ms valores. Establecer las principales propiedades y mtodos de las listas desplegables y cuadros combinados.

Consideraciones

Para el desarrollo del presente laboratorio Ud. deber crear una carpeta C:\FundVFP\Lab4, para guardar sus trabajos correspondientes a este laboratorio. Aplicacin N 1 Este ejercicio consiste en elaborar una aplicacin que permita cambiar el aspecto de una caja de texto. El usuario debe elegir el tipo de fuente a utilizar, el estilo, el color y el tamao. El diseo de la interfaz debe ser similar a:

Para el desarrollo de esta aplicacin, proceda a ubicar los siguientes controles en el formulario: 5 etiquetas 1 caja de texto 1 cuadro combinado 1 lista 3 casillas de verificacin 1 grupo de botones de opcin 1 botn de comando En seguida proceda a establecer las propiedades segn se indica: Form1

Name AutoCenter Caption MaxButton MinButton

FrmEditor .T.-Verdadero Editor .F.-Falso .F.-Falso

Label1
Name Caption LblTexto Texto

Label2
Name Caption LblFuente Fuente

Label3
Name Caption LblTamao Tamao

Label4
Name Caption LblEstilo Estilo

Label5
Name Caption LblColor Color

Combo1
Name CboFuente

List1
Name LstTamao

Text1
Name ForeColor TxtTexto 255, 0, 0

Check1
Name Caption FontBold ChkNegrita Negrita .T.-Verdadero

Check2
Name Caption FontItalic ChkCursiva Cursiva .T.-Verdadero

Check3
Name Caption FontUnderline ChkSubrayado Subrayado .T.-Verdadero

OptionGroup1
ButtonCount 3

Option1
Name OptRojo

ForeColor

255, 0, 0

Option2
Name ForeColor OptVerde 0, 255, 0

Option3
Name ForeColor OptAzul 0, 0, 255

Command1
Name Caption Default CmdSalir \<Salir .T.-Verdadero

Una vez establecidas las propiedades de la interfaz, proceda a ingresar el cdigo que se muestra a continuacin:
Objeto: FrmEditor Procedimiento: Init

Thisform.CboFuente.AddItem("Arial") Thisform.CboFuente.AddItem("Arial Black") Thisform.CboFuente.AddItem("Courier New") Thisform.CboFuente.AddItem("Garamond") Thisform.CboFuente.AddItem("Impact") Thisform.CboFuente.AddItem("MS Sans Serif") Thisform.CboFuente.AddItem("Technical") Thisform.CboFuente.AddItem("Times New Roman")

For nI = 8 To 20 Step 2 Thisform.LstTamao.AddItem(Alltrim(Str(nI))) Next


Objeto: FrmEditor Procedimiento: QueryUnload

#DEFINE vfpYesNo 4 #DEFINE vfpYes 6 #DEFINE vfpQuestion 32 If MessageBox("Desea terminar la aplicacin?", ; vfpQuestion + vfpYesNo, "Pregunta") = vfpYes Then Release Thisform Else NoDefault EndIf
Objeto: CboFuente Procedimiento: Click

Thisform.TxtTexto.FontName = Thisform.CboFuente.Value Thisform.Refresh


Objeto: LstTamao Procedimiento: Click

nTamao = Val(Thisform.LstTamao.Value) Thisform.TxtTexto.FontSize = nTamao Thisform.Refresh


Objeto: ChkNegrita Procedimiento: Click

If Thisform.ChkNegrita.Value = 1 Then Thisform.TxtTexto.FontBold = .T. Else Thisform.TxtTexto.FontBold = .F. EndIf Thisform.Refresh


Objeto: ChkCursiva Procedimiento: Click

If Thisform.ChkCursiva.Value = 1 Then Thisform.TxtTexto.FontItalic = .T. Else Thisform.TxtTexto.FontItalic = .F. EndIf Thisform.Refresh


Objeto: ChkSubrayado Procedimiento: Click

If Thisform.ChkSubrayado.Value = 1 Then Thisform.TxtTexto.FontUnderline = .T. Else Thisform.TxtTexto.FontUnderline = .F. EndIf Thisform.Refresh


Objeto: OptRojo Procedimiento: Click

Thisform.TxtTexto.ForeColor = RGB(255, 0, 0) Thisform.Refresh


Objeto: OptVerde Procedimiento: Click

Thisform.TxtTexto.ForeColor = RGB(0, 255, 0) Thisform.Refresh


Objeto: OptAzul Procedimiento: Click

Thisform.TxtTexto.ForeColor = RGB(0, 0, 255) Thisform.Refresh


Objeto: CmdSalir Procedimiento: Click

Thisform.QueryUnload Aplicacin N 2 Este ejercicio consiste en desarrollar una aplicacin que permita ingresar el nombre de un curso, el cual pasa a formar parte de una lista de espera antes de ser programado para su dictado. Los cursos deben ser seleccionados de la lista de espera y trasladados a la lista de cursos programados y viceversa. El diseo de la interfaz debe ser similar a la figura mostrada:

Para el desarrollo de esta aplicacin proceda a ubicar los siguientes controles en el formulario: 3 etiquetas 1 cuadro de texto 2 listas 5 botones de comando En seguida proceda a establecer las propiedades segn se indica: Form1
Name Caption MaxButton MinButton FrmCursos Cursos .F.-Falso .F.-Falso

Label1
Name LblCurso

Caption

Ingrese nuevo curso:

Label2
Name Caption LblSeleccionar Seleccione un curso:

Label3
Name Caption LblProgramado Curso programado:

Text1
Name TxtCurso

List1
Name LstSeleccionar

List2
Name LstProgramado

Command1
Name Caption Picture C:\FundVFP\Bitmaps\AddItem.Bmp CmdAgregar

Command2
Name Caption CmdAgregarTodo

Picture

C:\FundVFP\Bitmaps\AddAll.Bmp

Command3
Name Caption Picture C:\FundVFP\Bitmaps\Remove.Bmp CmdQuitar

Command4
Name Caption Picture C:\FundVFP\Bitmaps\RemoveAll.Bmp CmdQuitarTodo

Command5
Name Caption CmdAnnadir \<Aadir

En seguida proceda a ingresar el cdigo que se indica:


Objeto: CmdAnnadir Procedimiento: Click

Thisform.LstSeleccionar.Additem(Thisform.TxtCurso.Value) Thisform.TxtCurso.Value = "" Thisform.TxtCurso.SetFocus


Objeto: LstSeleccionar Procedimiento: Click

If Thisform.LstSeleccionar.ListIndex != 0 Then Thisform.CmdAgregar.Enabled = .T. Thisform.CmdAgregarTodo.Enabled = .T. EndIf

Thisform.Refresh
Objeto: LstProgramado Procedimiento: Click

If Thisform.LstProgramado.ListIndex != 0 Then Thisform.CmdQuitar.Enabled = .T. Thisform.CmdQuitarTodo.Enabled = .T. EndIf Thisform.Refresh


Objeto: CmdAgregar Procedimiento: Click

cCurso = Thisform.LstSeleccionar.Value nCurso = Thisform.LstSeleccionar.ListIndex If Thisform.LstSeleccionar.ListCount > 0 Then Thisform.LstProgramado.AddItem(cCurso) Thisform.LstSeleccionar.RemoveItem(nCurso) Thisform.LstSeleccionar.ListIndex = 0 Thisform.CmdAgregar.Enabled = .F. Thisform.CmdAgregarTodo.Enabled = .F. EndIf Thisform.Refresh
Objeto: CmdQuitar Procedimiento: Click

cCurso = Thisform.LstProgramado.Value nCurso = Thisform.LstProgramado.ListIndex

If Thisform.LstProgramado.ListCount > 0 Then Thisform.LstSeleccionar.AddItem(cCurso) Thisform.LstProgramado.RemoveItem(nCurso) Thisform.LstProgramado.ListIndex = 0 Thisform.CmdQuitar.Enabled = .F. Thisform.CmdQuitarTodo.Enabled = .F. EndIf Thisform.Refresh
Objeto: CmdAgregarTodo Procedimiento: Click

For nI = 1 To Thisform.LstSeleccionar.ListCount Thisform.LstProgramado.AddItem; (Thisform.LstSeleccionar.List(nI)) Next Thisform.LstSeleccionar.Clear Thisform.CmdAgregar.Enabled = .F. Thisform.CmdAgregarTodo.Enabled = .F. Thisform.Refresh
Objeto: CmdQuitarTodo Procedimiento: Click

For nI = 1 To Thisform.LstProgramado.ListCount Thisform.LstSeleccionar.AddItem; (Thisform.LstProgramado.List(nI))

Next Thisform.LstProgramado.Clear Thisform.CmdQuitar.Enabled = .F. Thisform.CmdQuitarTodo.Enabled = .F. Thisform.Refresh


Objeto: FrmCursos Procedimiento: QueryUnload

#DEFINE vfpYesNo 4 #DEFINE vfpYes 6 #DEFINE vfpQuestion 32 If MessageBox("Desea terminar la aplicacin?", ; vfpQuestion + vfpYesNo, "Pregunta") = vfpYes Then Release Thisform Else NoDefault EndIf Aplicacin N 3 El ejercicio consiste en elaborar una aplicacin que permita leer nmeros de tipo entero, y a continuacin los visualice ordenados en forma ascendente o descendente. Utilice el mtodo de la burbuja para realizar la ordenacin.

Para el desarrollo de esta aplicacin, proceda a ubicar los siguientes controles en el formulario: 3 etiquetas 1 caja de texto 1 lista 1 grupo de botones de opcin 3 botones de comando En seguida proceda a establecer las propiedades segn se indica: Form1
Nombre Caption MaxButton MinButton FrmBurbuja Ordenacin por burbuja .F.-Falso .F.-Falso

Label1
Name Caption LblNumero Ingrese un nuevo nmero:

Label2
Name Caption LblOrden Orden:

Label3
Name Caption LblLista Lista de nmeros:

Text1
Name Value TxtNumero 0

List1
Name LstNumero

Option1
Nombre Caption OptAscendente Ascendente

Option2
Nombre Caption OptDescendente Descendente

Command1
Nombre Caption Default CmdAnnadir \<Aadir True

Command2

Nombre Caption

CmdOrdenar \<Ordenar

Command3
Nombre Cancel Caption Picture CmdSalir .T.-Verdadero \<Salir C:\Archivos de programa\Microsoft Visual Studio\Common\Graphics\Icons\Arrows\ Point04.ico

Una vez establecidas las propiedades proceda a ingresar el cdigo que se indica a continuacin:
Objeto: FrmBurbuja Procedimiento: QueryUnload

#DEFINE vfpYesNo 4 #DEFINE vfpYes 6 #DEFINE vfpQuestion 32 If MessageBox("Desea terminar la aplicacin?", ; vfpQuestion + vfpYesNo, "Pregunta") = vfpYes Then Release Thisform Else NoDefault EndIf
Objeto: CmdAnnadir Procedimiento: Click

Thisform.LstNumero.AddItem(Thisform.TxtNumero.Value) Thisform.TxtNumero.Value = "" Thisform.TxtNumero.SetFocus


Objeto: CmdOrdenar Procedimiento: Click

nN = Thisform.LstNumero.ListCount Dimension nA(nN) As Integer For nI = 1 To nN nA(nI) = Thisform.LstNumero.List(nI) Next If Thisform.OptionGroup1.OptAscendente.Value = 1 Then For nI = 1 To nN - 1 For nJ = nI + 1 To nN If nA(nI) > nA(nJ) Then nT = nA(nI) nA(nI) = nA(nJ) nA(nJ) = nT EndIf Next Next EndIf If Thisform.OptionGroup1.OptDescendente.Value = 1 Then For nI = 1 To nN - 1

For nJ = nI + 1 To nN If nA(nI) < nA(nJ) Then nT = nA(nI) nA(nI) = nA(nJ) nA(nJ) = nT EndIf Next Next EndIf Thisform.LstNumero.Clear For nI = 1 To nN Thisform.LstNumero.List(nI) = nA(nI) Next
Objeto: CmdSalir Procedimiento: Click

Thisform.QueryUnload Aplicacin N 4 Desarrollar una aplicacin que permita realizar consultas acerca de un determinado curso, los cuales se mostraran en una lista. El usuario debe seleccionar un curso y en seguida se debe presentar el nombre del profesor encargado del curso (teora), el nombre del jefe de prctica (laboratorio), as como los horarios de teora y de laboratorio, respectivamente. El diseo de la interfaz debe ser similar a la figura que se muestra:

Microsoft

Visual FoxPro

GUA DE LABORATORIO N 5 Objetivos Luego de completar este laboratorio, el estudiante ser capaz de:

Crear mtodos definidos por el usuario. Pasar correctamente los argumentos a un mtodo. Ejecutar mtodos desde un formulario. Implementar mtodos que devuelvan mltiples valores.

Consideraciones Para el desarrollo del presente laboratorio Ud. deber crear una carpeta C:\FundVFP\Lab5, para guardar sus trabajos correspondientes a este laboratorio.

Aplicacin N 1 Este primer ejercicio consiste en escribir un mtodo que reciba como argumento una cadena de caracteres y la devuelva en forma inversa. Por ejemplo si se ingresa la cadena CORAZON deber retornar NOZAROC.

Para el desarrollo de esta aplicacin, proceda a ubicar los siguientes controles en el formulario: 2 etiquetas 2 cajas de texto 3 botones de comando En seguida proceda a establecer las propiedades segn se indica: Form1
Nombre Caption MaxButton MinButton FrmPrueba_Cadena Cadena invertida .F.-Falso .F.-Falso

Label1
Nombre Caption LblCadena Ingrese una cadena:

Label2
Nombre Caption LblInvertida Cadena invertida:

Text1
Nombre Enabled TxtCadena .T.-Verdadero

Text2
Nombre Enabled TxtInvertida .F.-Falso

Command1
Nombre Caption Default CmdAceptar \<Aceptar .T.-Verdadero

Command2
Nombre Caption CmdLimpiar \<Limpiar

Command3
Nombre Cancel Caption CmdSalir .T.-Verdadero \<Salir

Una vez establecidas las propiedades de la interfaz, proceda a crear un nuevo mtodo, denominado CadInvertida. Para ello vaya al Men Formulario y elija la

opcin Crear nuevo mtodo. Se debe presentar una ventana similar a la figura siguiente:

Ingrese los datos que se muestran y a continuacin dar click en el botn Agregar. Luego, dar doble click sobre el formulario y transcriba el siguiente cdigo:
Objeto: FrmPrueba_Cadena Procedimiento: CadInvertida

Parameters cCadena nN = Len(Alltrim(cCadena)) Dimension cTemporal(nN) For nI = 1 To nN cTemporal(nI) = SubStr(cCadena, nI, 1) Next cCadena = "" For nJ = nN To 1 Step -1 cInvertida = cInvertida + cTemporal(nJ) Next Return cInvertida
Objeto: CmdAceptar Procedimiento: Click

cCadena = Thisform.TxtCadena.Value Thisform.TxtInvertida.Value = Thisform.CadInvertida(cCadena) Thisform.Refresh Aplicacin N 2 Este ejercicio consiste en crear un mtodo que reciba como argumento los apellidos y nombres de un cliente (en ese orden) y retorne los nombres y apellidos del mismo.

Para el desarrollo de esta aplicacin proceda a crear un nuevo mtodo denominado NomApe. Luego transcriba el siguiente cdigo:
Objeto: FrmPrueba_NomApe Procedimiento: NomApe

Parameters cApeNom nN = Len(Alltrim(cApeNom)) Dimension cNom(nN) Dimension cApe(nN) For nI = 1 To nN If SubStr(cApeNom, nI, 1) = "," Then Exit

EndIf Next cApe = SubStr(cApeNom, 1, nI-1) cNom = SubStr(cApeNom, nI + 1, nN - nI) cNomApe = cNom + " " + cApe Return cNomApe Aplicacin N 3 Para calcular el porcentaje de humedad de una muestra slida primero se pesa la muestra ( ), luego se le lleva a la estufa de 120 a 150 C por un tiempo de 2 horas aproximadamente. A continuacin se deja enfriar la muestra y se pesa nuevamente ( ). Finalmente se realiza el siguiente clculo:

Nuestro trabajo consiste en crear un mtodo que permita realizar el clculo anterior.

Para el desarrollo de esta aplicacin proceder a cera un nuevo mtodo denominado Humedad. Luego ingrese el siguiente cdigo:
Objeto: FrmPrueba_Humedad Procedimiento: Humedad

Parameters nM1, nM2 nH = 100 * (nM1 - nM2) / nM1 Return nH


Objeto: CmdAceptar Procedimiento: Click

nMasa1 = Val(Thisform.TxtMasa1.Value) nMasa2 = Val(Thisform.TxtMasa2.Value) nHumedad = Thisform.Humedad(nMasa1, nMasa2) Thisform.TxtHumedad.Value = Str(nHumedad, 10, 4) Thisform.Refresh Aplicacin N 4 Escriba un mtodo que reciba como parmetro la fecha de nacimiento del usuario. Debe retornar el signo zodiacal, el da de nacimiento y la cantidad de das vividos hasta la fecha actual. Utilice un formulario de prueba para verificar la funcionalidad del mtodo creado.

Sugerencia Retorne un nico valor como una cadena de caracteres, en la cual estn incluidos los valores que se piden. A manera de ejemplo considere lo siguiente:

cRpta = cZodiaco + cDiaNacimiento + cDiasVividos + cFechaHoy Return cRpta

Fin del Nivel I

You might also like