You are on page 1of 55

MICROSOFT VISUAL FOXPRO

NIVEL I

INTRODUCCIN A LA PROGRAMACIN

Elaborado por CARLOS CASTILLO PERALTA cc_peralta@hotmail.com

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 1

INTRODUCCIN

La

presente de del

Gua

de

Laboratorio, la parte

se

elabor con

con la

la

finalidad prctica

complementar curso.

terica

parte

Contiene una gran variedad de ejemplos

prcticos recopilados a lo largo de varios aos como docente y programador en diversas instituciones. Si desean compartirla con otros colegas, me agradara

mucho que lo hicieran, con la nica condicin de que siempre se respete el derecho del autor. Desde ya les deseo la mejor de las suertes en el

aprendizaje de Microsoft Visual FoxPro. Lima, Abril del 2001

Carlos Castillo Peralta


Profesor de Lenguajes de Programacin

Microsoft
GUA DE LABORATORIO N 1 Objetivos

Visual FoxPro

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:

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 3

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 ? Menor = + Str(nMay) = + Str(nMen) ? Central = + Str(nCen)

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 casos S/. no 30.00 se y S/. 50.00; tipo un de descuento descuento. del El 20% para consumos mayores a S/. 50.00 nuevos soles; para todos los dems aplica ningn 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 Elaborado por Carlos Castillo Peralta cc_peralta@hotmail.com Pg. 5

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 n 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

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 7

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:

D 1 8 15 22 29

L 2 9 16 23 30

M 3 10 17 24

ABRIL M J 4 11 18 25 5 12 19 26

V 6 13 20 27

S 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
GUA DE LABORATORIO N 2 Objetivos

Visual FoxPro

Luego de completar este laboratorio, el estudiante ser capaz de: Implementar 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 Elaborado por Carlos Castillo Peralta cc_peralta@hotmail.com Pg. 9 soluciones mediante programacin orientada a

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

10

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 Label1 Name Caption Label2 Name Caption Text1 Name InputMask Value Text2 Name InputMask Value TxtMay 999 0 cc_peralta@hotmail.com Pg. 11 TxtX 999.999 0 LblMay Mayor: LblX Ingrese un real de la forma eee.ddd? FrmAplica01 Mayor valor de un nmero real .F.-Falso .F.-Falso

Elaborado por Carlos Castillo Peralta

Command1 Name Caption Default Command2 Name Caption Command3 Name Cancel Caption CmdSalir .T.-Verdadero \<Salir CmdLimpiar \<Limpiar CmdAceptar \<Aceptar .T.-Verdadero

A continuacin dar doble click sobre el control CmdAceptar y proceda a ingresar el cdigo que se muestra: Objeto: CmdAceptar 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 Procedimiento: Click

12

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 Release Thisform A continuacin guarde su aplicacin como FrmAplica01, Procedimiento: Click

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 calcular este la ejercicio edad de una vamos a crear a un formulario de su para de persona partir fecha

nacimiento.

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 13

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, Form1 Name Caption MaxButton MinButton Label1 Name Caption Label2 Name Caption Text1 Name Enabled Text2 Name Enabled Command1 Name Caption Command2 Name Caption CmdLimpiar \<Limpiar CmdAceptar \<Aceptar TxtEdad .F.-Falso TxtFecNac .T.-Verdadero LblEdad Su edad es: LblFecNac Fecha de nacimiento: FrmEdad .F.-Falso .F.-Falso proceda a establecer las propiedades segn se

indica a continuacin:

14

Command3 Name CmdSalir Caption \<Salir Luego de establecidas las propiedades de los controles, proceda a ingresar el siguiente cdigo: Objeto: FrmEdad Set Date French Set Century On Objeto: FrmEdad 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 Procedimiento: Init Procedimiento: Load

dFecNac = Ctod(Thisform.TxtFecNac.Value) nEdad = Int ((Date() - dFecNac) / 365) Thisform.TxtEdad.Value = Str(nEdad) + aos Thisform.Refresh Objeto: CmdLimpiar Thisform.TxtFecNac.Value = Thisform.TxtEdad.Value = Thisform.TxtFecNac.Setfocus Thisform.Refresh Elaborado por Carlos Castillo Peralta cc_peralta@hotmail.com Pg. 15 Procedimiento: Click

Objeto: CmdSalir Release Thisform Aplicacin N 3 Este ejercicio consiste

Procedimiento: Click

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 FrmReloj
16

Caption MaxButton MinButton Label1 Name Caption Label2 Name Caption Text1 Name FontBold FontSize Text2 Name FontBold FontSize Timer1 Name Enabled Interval Command1 Name Caption Default Command2 Name Cancel Caption

Reloj despertador digital .F.-Falso .F.-Falso LblHora Hora

LblDespertador Despertador

TxtHora .T.-Verdadero 24

TxtDespertador .T.-Verdadero 24

Timer1 .T.-Verdadero 500

CmdOnOff \<Desactivar .T.-Verdadero

CmdTerminar .T.-Verdadero \<Terminar

Una vez establecidas las propiedades, proceda a ingresar el cdigo que se muestra: Objeto: FrmReloj Elaborado por Carlos Castillo Peralta Procedimiento: Load cc_peralta@hotmail.com Pg. 17

Public lOnOff Objeto: FrmReloj lOnOff = .F. Thisform.TxtDespertador.Value = 00:00:00 Thisform.Refresh Objeto: Timer1 Procedimiento: Timer Procedimiento: Init

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 If lOnOff Then lOnOff = .F. Thisform.CmdOnOff.Caption = \<Activar Else lOnOff = .T. Thisform.CmdOnOff.Caption = \<Desactivar EndIf Thisform.Refresh Objeto: CmdTerminar Release Thisform Procedimiento: Click Procedimiento: Click

18

Aplicacin N 4 Se tiene un cajero automtico el cual permite manipular cierta cantidad de dinero S/. para 10.00, lo cual dispone S/. de los siguientes billetes: S/. 20.00, 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:

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 19

Microsoft
GUA DE LABORATORIO N 3 Objetivos

Visual FoxPro

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.

20

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 y nada elija en la especial). opcin Nuevamente nuevo vaya al Men El Formulario Agregar formulario.

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

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 21

Seguidamente Form1 Name Caption MaxButton MinButton Label1 Name Caption Label2 Name Caption Text1 Name Value Text2 Name Value Command1 Name Caption Default Command2 Name Cancel Caption A

debe

establecer

las

propiedades

de

los

objetos segn se indica: FrmIngreso Ingreso de datos .F.-Falso .F.-Falso

LblNumerador Numerador?

LblDenominador Denominador?

TxtNumerador 0

TxtDenominador 0

CmdSimplificar Simplificar .T.-Verdadero

CmdSalir .T.-Verdadero Salir proceda a ingresar el cdigo que se

continuacin

muestra: Objeto: CmdSimplificar Procedimiento: Click

22

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 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 Procedimiento: Click

objetos segn se indica: Form2 Name FrmSalida cc_peralta@hotmail.com Pg. 23

Elaborado por Carlos Castillo Peralta

Caption MaxButton MinButton Label1 Name Caption Text1 Name Alignment Command1 Name Caption A continuacin

Salida .F.-Falso .F.-Falso

LblFraccion Fraccin simplificada:

TxtFraccion 2-Centro

CmdVolver Volver proceda a ingresar el cdigo que se

muestra: Objeto: FrmSalida cNumerador = Str(nNumerador) cDenominador = Str(nDenominador) cFraccion = cNumerador + / + cDenominador Thisformset.FrmSalida.TxtFraccion.Value = cFraccion Thisformset.Refresh Objeto: CmdVolver Thisformset.FrmSalida.Hide Thisformset.FrmIngreso.Show Thisformset.Refresh Finalmente proceda a ingresar el cdigo que se indica a continuacin: Objeto: Formset1 Public nNumerador
24

Procedimiento: Activate

Procedimiento: Click

Procedimiento: Load

Public nDenominador Public nC Objeto: Formset1 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: Procedimiento: Init

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:

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 25

En usuario

caso elige

de la

que

el

usuario Caso No, se

elija debe

la

opcin es decir

Si, si con

la el la

aplicacin aplicacin.

debe

terminar. opcin

contrario,

proseguir

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 Label1 Name AutoSize Caption Label2 Name AutoSize LblMes .T.-Verdadero
26

FrmFecha Fecha en letras .F.-Falso .F.-Falso

LblDia .T.-Verdadero Da:

Caption Label3 Name AutoSize Caption Label4 Name AutoSize Caption Spinner1 Name SpinnerHighValue SpinnerLowValue Spinner2 Name SpinnerHighValue SpinnerLowValue Spinner3 Name SpinnerHighValue SpinnerLowValue Text1 Name Alignment Command1 Name Caption Default Command2 Name Caption Command3 Name

Mes:

LblAnno .T.-Verdadero Ao:

LblEnLetras .T.-Verdadero En letras:

SpnDia 31 1

SpnMes 12 1

SpnAnno 9999 0

TxtEnLetras 2-Centro CmdAceptar \<Aceptar .T.-Verdadero

CmdLimpiar \<Limpiar

CmdSalir cc_peralta@hotmail.com Pg. 27

Elaborado por Carlos Castillo Peralta

Cancel Caption

.T.-Verdadero \<Salir

Una vez establecidas las propiedades proceda a ingresar el cdigo que se indica a continuacin: Objeto: FrmFecha Set Date French Set Century On Objeto: FrmFecha #DEFINE vfpYesNo #DEFINE vfpYes 4 6 Procedimiento: QueryUnload Procedimiento: Load

#DEFINE vfpQuestion 32 If MessageBox(Desea terminar la aplicacin?, ; vfpQuestion + vfpYesNo, Pregunta) = vfpYes Then Release Thisform Else NoDefault EndIf Objeto: CmdAceptar 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 Procedimiento: Click

28

Thisform.TxtEnLetras.Value = cFecha Thisform.Refresh Objeto: CmdLimpiar Thisform.SpnDia.Value = 0 Thisform.SpnMes.Value = 0 Thisform.SpnAnno.Value = 0 Thisform.TxtEnLetras.Value = Thisform.SpnDia.Setfocus Thisform.Refresh Objeto: CmdSalir Thisform.QueryUnload Aplicacin N 3 Este permita utilizar ejercicio leer un un consiste en elaborar y un formulario su tabla que se nmero entero de cuadro visualice edicin, de el Procedimiento: Click Procedimiento: Click

multiplicar. Para construir la tabla de multiplicar vamos a control similares cuadro a un cual pero tiene permite propiedades texto,

escribir texto en lneas diferentes.

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 29

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 Label1 Name Caption LblNumero Ingrese un nmero: FrmTabla Tabla de multiplicar .F.-Falso .F.-Falso

Text1

30

Name Alignment Edit1 Name ScrollBars Command1 Name Caption Default

TxtNumero 2-Centro

EdtTabla 2-Vertical

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 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 Elaborado por Carlos Castillo Peralta cc_peralta@hotmail.com Pg. 31 Procedimiento: Click

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
32

GUA DE LABORATORIO N 4 Objetivos Luego de completar este laboratorio, el estudiante ser capaz de: Usar casillas las de verificacin y botones y de opcin de para las

alternar entre uno o ms valores. Establecer principales propiedades mtodos 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: Elaborado por Carlos Castillo Peralta cc_peralta@hotmail.com Pg. 33

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 Label1 Name Caption Label2 Name Caption Label3 Name Caption Label4 Name Caption Label5 Name LblColor LblTamao Tamao LblEstilo Estilo LblFuente Fuente LblTexto Texto FrmEditor .T.-Verdadero Editor .F.-Falso .F.-Falso

34

Caption Combo1 Name List1 Name Text1 Name ForeColor Check1 Name Caption FontBold Check2 Name Caption FontItalic Check3 Name Caption FontUnderline OptionGroup1 ButtonCount Option1 Name ForeColor Option2 Name ForeColor Option3

Color

CboFuente

LstTamao

TxtTexto 255, 0, 0

ChkNegrita Negrita .T.-Verdadero

ChkCursiva Cursiva .T.-Verdadero

ChkSubrayado Subrayado .T.-Verdadero

OptRojo 255, 0, 0

OptVerde 0, 255, 0

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 35

Name ForeColor Command1 Name Caption Default Una vez

OptAzul 0, 0, 255

CmdSalir \<Salir .T.-Verdadero 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 #DEFINE vfpYesNo #DEFINE vfpYes 4 6 Procedimiento: QueryUnload

#DEFINE vfpQuestion 32 If MessageBox(Desea terminar la aplicacin?, ; vfpQuestion + vfpYesNo, Pregunta) = vfpYes Then Release Thisform Else

36

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 Elaborado por Carlos Castillo Peralta cc_peralta@hotmail.com Pg. 37

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 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: Procedimiento: Click

38

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 Label1 Name Caption LblCurso Ingrese nuevo curso: cc_peralta@hotmail.com Pg. 39 FrmCursos Cursos .F.-Falso .F.-Falso

Elaborado por Carlos Castillo Peralta

Label2 Name Caption Label3 Name Caption Text1 Name List1 Name List2 Name Command1 Name Caption Picture Command2 Name Caption Picture Command3 Name Caption Picture Command4 Name Caption Picture Command5 Name CmdAnnadir
40

LblSeleccionar Seleccione un curso:

LblProgramado Curso programado:

TxtCurso

LstSeleccionar

LstProgramado

CmdAgregar C:\FundVFP\Bitmaps\AddItem.Bmp

CmdAgregarTodo C:\FundVFP\Bitmaps\AddAll.Bmp

CmdQuitar C:\FundVFP\Bitmaps\Remove.Bmp

CmdQuitarTodo C:\FundVFP\Bitmaps\RemoveAll.Bmp

Caption

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

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 41

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

42

Next Thisform.LstProgramado.Clear Thisform.CmdQuitar.Enabled = .F. Thisform.CmdQuitarTodo.Enabled = .F. Thisform.Refresh Objeto: FrmCursos #DEFINE vfpYesNo #DEFINE vfpYes 4 6 Procedimiento: QueryUnload

#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 n 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.

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 43

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 Label1 Name Caption Label2 Name Caption Label3 Name Caption Text1 Name Value List1 TxtNumero 0 LblLista Lista de nmeros: LblOrden Orden: LblNumero Ingrese un nuevo nmero: FrmBurbuja Ordenacin por burbuja .F.-Falso .F.-Falso

44

Name Option1 Nombre Caption Option2 Nombre Caption Command1 Nombre Caption Default Command2 Nombre Caption Command3 Nombre Cancel Caption Picture

LstNumero

OptAscendente Ascendente

OptDescendente Descendente

CmdAnnadir \<Aadir True

CmdOrdenar \<Ordenar

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 #DEFINE vfpYesNo #DEFINE vfpYes 4 6 Procedimiento: QueryUnload

#DEFINE vfpQuestion 32 If MessageBox(Desea terminar la aplicacin?, ; vfpQuestion + vfpYesNo, Pregunta) = vfpYes Then Elaborado por Carlos Castillo Peralta cc_peralta@hotmail.com Pg. 45

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

46

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 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: Procedimiento: Click

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 47

Microsoft
GUA DE LABORATORIO N 5 Objetivos

Visual FoxPro

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.

48

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 cc_peralta@hotmail.com Pg. 49

Elaborado por Carlos Castillo Peralta

Label1 Nombre Caption Label2 Nombre Caption Text1 Nombre Enabled Text2 Nombre Enabled Command1 Nombre Caption Default Command2 Nombre Caption Command3 Nombre Cancel Caption Una vez CmdSalir .T.-Verdadero \<Salir establecidas las propiedades de la interfaz, CmdLimpiar \<Limpiar CmdAceptar \<Aceptar .T.-Verdadero TxtInvertida .F.-Falso TxtCadena .T.-Verdadero LblInvertida Cadena invertida: LblCadena Ingrese una cadena:

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:

50

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 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 Procedimiento: CadInvertida

cCadena = Thisform.TxtCadena.Value Thisform.TxtInvertida.Value = Thisform.CadInvertida(cCadena) Thisform.Refresh

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 51

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 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 Procedimiento: NomApe

52

Return cNomApe Aplicacin N 3 Para calcular el porcentaje de humedad de una muestra

slida primero se pesa la muestra ( m1 ), 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 ( m2 ). Finalmente se realiza el siguiente

clculo: m m2 % Humedad = 100 1 m 1

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 Parameters nM1, nM2 Procedimiento: Humedad

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 53

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:

54

cRpta = cZodiaco + cDiaNacimiento + cDiasVividos + cFechaHoy Return cRpta

Fin del Nivel I Suerte

Prximamente Nivel II : Programacin de aplicaciones de escritorio Nivel III : Programacin de aplicaciones Cliente-Servidor

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 55