Anda di halaman 1dari 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

finalidad
prctica

de

Gua

de

Laboratorio,

complementar

del curso.

la

Contiene

parte

se

elabor

terica

con

una gran variedad

con
la

de

la

parte

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

Visual FoxPro

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 2

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:
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 3

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:
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 4

Do Aplica01
Aplicacin N 2
Un restaurante ofrece un descuento del 10% para consumos
entre

S/.

30.00

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

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 5

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
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 6

A continuacin vamos a escribir una funcin que reciba


como

argumento

de

entrada

una

cadena

de

caracteres

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:

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 7

ABRIL
D

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

Creo que a estas alturas Ud. ya entendi como funciona


esto. Por ello, esta aplicacin se deja como ejercicio para el
estudiante.

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 8

Microsoft

Visual FoxPro

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

soluciones

mediante

programacin

orientada

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.

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 9

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.

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 10

Form1
Name

FrmAplica01

Caption

Mayor valor de un nmero real

MaxButton

.F.-Falso

MinButton

.F.-Falso

Label1
Name

LblX

Caption

Ingrese un real de la forma eee.ddd?

Label2
Name

LblMay

Caption

Mayor:

Name

TxtX

InputMask

999.999

Value

Name

TxtMay

InputMask

999

Value

Text1

Text2

Command1
Name

CmdAceptar

Caption

\<Aceptar

Default

.T.-Verdadero

Command2
Name

CmdLimpiar

Caption

\<Limpiar

Command3
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 11

Name

CmdSalir

Cancel

.T.-Verdadero

Caption

\<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
Elaborado por Carlos Castillo Peralta

Procedimiento: Click
cc_peralta@hotmail.com Pg. 12

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
calcular

este
la

ejercicio
edad

de

vamos

una

persona

crear
a

un

partir

formulario
de

su

para

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

establecer

las

propiedades

segn

se

indica a continuacin:
Form1
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 13

Name

FrmEdad

Caption
MaxButton

.F.-Falso

MinButton

.F.-Falso

Label1
Name

LblFecNac

Caption

Fecha de nacimiento:

Label2
Name

LblEdad

Caption

Su edad es:

Name

TxtFecNac

Enabled

.T.-Verdadero

Name

TxtEdad

Enabled

.F.-Falso

Text1

Text2

Command1
Name

CmdAceptar

Caption

\<Aceptar

Command2
Name

CmdLimpiar

Caption

\<Limpiar

Command3
Name

CmdSalir

Caption

\<Salir

Luego de establecidas las propiedades de los controles,


proceda a ingresar el siguiente cdigo:
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 14

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

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 15

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

FrmReloj

Caption

Reloj despertador digital

MaxButton

.F.-Falso

MinButton

.F.-Falso

Label1
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 16

Name

LblHora

Caption

Hora

Label2
Name

LblDespertador

Caption

Despertador

Name

TxtHora

FontBold

.T.-Verdadero

FontSize

24

Name

TxtDespertador

FontBold

.T.-Verdadero

FontSize

24

Text1

Text2

Timer1
Name

Timer1

Enabled

.T.-Verdadero

Interval

500

Command1
Name

CmdOnOff

Caption

\<Desactivar

Default

.T.-Verdadero

Command2
Name

CmdTerminar

Cancel

.T.-Verdadero

Caption

\<Terminar

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 17

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
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 18

Objeto: CmdTerminar

Procedimiento: Click

Release Thisform
Aplicacin N 4
Se tiene un cajero automtico el cual permite manipular
cierta

cantidad

siguientes

de

billetes:

dinero

para

S/.

10.00,

lo
S/.

cual

dispone

20.00,

S/.

de

los

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

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.

Elaborado por Carlos Castillo Peralta

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

Formulario

nada

en

especial).

elija

la

opcin

Nuevamente

Agregar

nuevo

vaya

al

Men

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:


Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 21

Form1
Name

FrmIngreso

Caption

Ingreso de datos

MaxButton

.F.-Falso

MinButton

.F.-Falso

Label1
Name

LblNumerador

Caption

Numerador?

Label2
Name

LblDenominador

Caption

Denominador?

Name

TxtNumerador

Value

Name

TxtDenominador

Value

Text1

Text2

Command1
Name

CmdSimplificar

Caption

Simplificar

Default

.T.-Verdadero

Command2
Name

CmdSalir

Cancel

.T.-Verdadero

Caption

Salir

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 22

continuacin

proceda

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:

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 23

Form2
Name

FrmSalida

Caption

Salida

MaxButton

.F.-Falso

MinButton

.F.-Falso

Label1
Name

LblFraccion

Caption

Fraccin simplificada:

Name

TxtFraccion

Alignment

2-Centro

Text1

Command1
Name

CmdVolver

Caption

Volver

proceda

continuacin

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
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 24

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:
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 25

En

caso

aplicacin
usuario

de

debe

elige

que

el

terminar.
la

opcin

usuario

elija

la

Caso

contrario,

No,

se

debe

opcin
es

decir

proseguir

Si,

la

si

el

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

FrmFecha

Caption

Fecha en letras

MaxButton

.F.-Falso

MinButton

.F.-Falso

Label1
Name

LblDia

AutoSize

.T.-Verdadero

Caption

Da:

Label2
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 26

Name

LblMes

AutoSize

.T.-Verdadero

Caption

Mes:

Label3
Name

LblAnno

AutoSize

.T.-Verdadero

Caption

Ao:

Label4
Name

LblEnLetras

AutoSize

.T.-Verdadero

Caption

En letras:

Spinner1
Name

SpnDia

SpinnerHighValue

31

SpinnerLowValue

Spinner2
Name

SpnMes

SpinnerHighValue

12

SpinnerLowValue

Spinner3
Name

SpnAnno

SpinnerHighValue

9999

SpinnerLowValue

Text1
Name

TxtEnLetras

Alignment

2-Centro

Command1
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 27

Name

CmdAceptar

Caption

\<Aceptar

Default

.T.-Verdadero

Command2
Name

CmdLimpiar

Caption

\<Limpiar

Command3
Name

CmdSalir

Cancel

.T.-Verdadero

Caption

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

#DEFINE vfpYes

#DEFINE vfpQuestion 32
If MessageBox(Desea terminar la aplicacin?, ;
vfpQuestion + vfpYesNo, Pregunta) = vfpYes Then
Release Thisform
Else
NoDefault
EndIf
Objeto: CmdAceptar
Elaborado por Carlos Castillo Peralta

Procedimiento: Click
cc_peralta@hotmail.com Pg. 28

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
permita

ejercicio
leer

un

consiste

nmero

en

entero

elaborar
y

un

formulario

visualice

su

tabla

que
se

multiplicar. Para construir la tabla de multiplicar vamos a


utilizar

un

propiedades

control
similares

cuadro
a

un

de
cuadro

edicin,
de

el

texto,

cual
pero

tiene
permite

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

FrmTabla

Caption

Tabla de multiplicar

MaxButton

.F.-Falso

MinButton

.F.-Falso

Label1
Name

LblNumero

Caption

Ingrese un nmero:

Text1
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 30

Name

TxtNumero

Alignment

2-Centro

Name

EdtTabla

ScrollBars

2-Vertical

Edit1

Command1
Name

CmdLimpiar

Caption

\<Limpiar

Default

.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
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 31

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

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 32

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

casillas

de

verificacin

botones

de

opcin

para

alternar entre uno o ms valores.


Establecer

las

principales

propiedades

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

FrmEditor

AutoCenter

.T.-Verdadero

Caption

Editor

MaxButton

.F.-Falso

MinButton

.F.-Falso

Label1
Name

LblTexto

Caption

Texto

Label2
Name

LblFuente

Caption

Fuente

Label3
Name

LblTamao

Caption

Tamao

Label4
Name

LblEstilo

Caption

Estilo

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 34

Label5
Name

LblColor

Caption

Color

Combo1
Name

CboFuente

Name

LstTamao

Name

TxtTexto

ForeColor

255, 0, 0

List1

Text1

Check1
Name

ChkNegrita

Caption

Negrita

FontBold

.T.-Verdadero

Check2
Name

ChkCursiva

Caption

Cursiva

FontItalic

.T.-Verdadero

Check3
Name

ChkSubrayado

Caption

Subrayado

FontUnderline

.T.-Verdadero

OptionGroup1
ButtonCount

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 35

Option1
Name

OptRojo

ForeColor

255, 0, 0

Option2
Name

OptVerde

ForeColor

0, 255, 0

Option3
Name

OptAzul

ForeColor

0, 0, 255

Command1
Name

CmdSalir

Caption

\<Salir

Default

.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
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 36

Objeto: FrmEditor

Procedimiento: QueryUnload

#DEFINE vfpYesNo

#DEFINE vfpYes

#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
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 37

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
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 38

parte de una lista de espera antes de ser programado para su


dictado. Los cursos deben ser seleccionados de la lista de
espera

trasladados

la

lista

de

cursos

programados

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

FrmCursos

Caption

Cursos

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 39

MaxButton

.F.-Falso

MinButton

.F.-Falso

Label1
Name

LblCurso

Caption

Ingrese nuevo curso:

Label2
Name

LblSeleccionar

Caption

Seleccione un curso:

Label3
Name

LblProgramado

Caption

Curso programado:

Name

TxtCurso

Name

LstSeleccionar

Name

LstProgramado

Text1

List1

List2

Command1
Name

CmdAgregar

Caption
Picture

C:\FundVFP\Bitmaps\AddItem.Bmp

Command2
Name

CmdAgregarTodo

Caption
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 40

Picture

C:\FundVFP\Bitmaps\AddAll.Bmp

Command3
Name

CmdQuitar

Caption
Picture

C:\FundVFP\Bitmaps\Remove.Bmp

Command4
Name

CmdQuitarTodo

Caption
Picture

C:\FundVFP\Bitmaps\RemoveAll.Bmp

Command5
Name

CmdAnnadir

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.
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 41

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;
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 42

(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

#DEFINE vfpYes

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

ejercicio

permita leer

consiste

en

elaborar

una

aplicacin

que

nmeros de tipo entero, y a continuacin los

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 43

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

FrmBurbuja

Caption

Ordenacin por burbuja

MaxButton

.F.-Falso

MinButton

.F.-Falso

Label1
Name

LblNumero

Caption

Ingrese un nuevo nmero:

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 44

Label2
Name

LblOrden

Caption

Orden:

Label3
Name

LblLista

Caption

Lista de nmeros:

Name

TxtNumero

Value

Name

LstNumero

Text1

List1

Option1
Nombre

OptAscendente

Caption

Ascendente

Option2
Nombre

OptDescendente

Caption

Descendente

Command1
Nombre

CmdAnnadir

Caption

\<Aadir

Default

True

Command2
Nombre

CmdOrdenar

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 45

Caption

\<Ordenar

Command3
Nombre

CmdSalir

Cancel

.T.-Verdadero

Caption

\<Salir

Picture

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

#DEFINE vfpYes

#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
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 46

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

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 47

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
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 48

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
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 49

3 botones de comando
En seguida proceda a establecer las propiedades segn se
indica:
Form1
Nombre

FrmPrueba_Cadena

Caption

Cadena invertida

MaxButton

.F.-Falso

MinButton

.F.-Falso

Label1
Nombre

LblCadena

Caption

Ingrese una cadena:

Label2
Nombre

LblInvertida

Caption

Cadena invertida:

Nombre

TxtCadena

Enabled

.T.-Verdadero

Nombre

TxtInvertida

Enabled

.F.-Falso

Text1

Text2

Command1
Nombre

CmdAceptar

Caption

\<Aceptar

Default

.T.-Verdadero

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 50

Command2
Nombre

CmdLimpiar

Caption

\<Limpiar

Command3
Nombre

CmdSalir

Cancel

.T.-Verdadero

Caption

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

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
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 51

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
Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 52

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 ( m1 ), luego se le lleva a la


estufa

de

120

150

por

un

tiempo

de

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
m1
Nuestro trabajo consiste en crear un mtodo que permita
realizar el clculo anterior.

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 53

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.

Elaborado por Carlos Castillo Peralta

cc_peralta@hotmail.com Pg. 54

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


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

Anda mungkin juga menyukai