Sie sind auf Seite 1von 48

Microsoft

Visual FoxPro

GUA DE LABORATORIO 01
Objetivos
Luego de completar este laboratorio, el estudiante ser
capaz de:
Identificar

los

elementos

del

entorno

integrado

de

desarrollo de Microsoft Visual FoxPro 9.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:\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

C$300.00

C$500.00;

un

descuento

del

20%

para

consumos mayores a C$800.00; para todos los dems casos no se


aplica ningn tipo de descuento. El ejercicio consiste en
elaborar un 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: To nConsumo
If Type (nConsumo) = N
Exit
EndIf
EndDo
Do Case
Case nConsumo >= 300 And nConsumo <= 500
nImporte = nConsumo * 0.9
Case nConsumo > 800
nImporte = nConsumo * 0.8
Otherwise

nImporte = nConsumo
EndCase
? Importe a pagar: + Str(nImporte)
Aplicacin N 3

n
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

devuelva

en

de

forma

entrada

una

inversa,

por

cadena

de

ejemplo

caracteres
si

se

la

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

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

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

formulario

en

control
la

deseado

posicin

luego

que

se

dar
le

click
desea

en

el

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:

Name
InputMask
Value

TxtX
999.999
0

Name
InputMask
Value

TxtMay
999
0

Text1

Text2

Command1
Name
Caption
Default

CmdAceptar
\<Aceptar
.T.-Verdadero

Command2
Name
Caption

CmdLimpiar
\<Limpiar

Command3
Name
Cancel
Caption

CmdSalir
.T.-Verdadero
\<Salir

dar

continuacin

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
Thisform.TxtX.Value = 0
Thisform.TxtMay.Value = 0
Thisform.TxtX.Setfocus
Thisform.Refresh

Procedimiento: Click

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

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

FrmEdad
.F.-Falso
.F.-Falso

Label1
Name
Caption

LblFecNac
Fecha de nacimiento:

Label2
Name
Caption

LblEdad
Su edad es:

Name
Enabled

TxtFecNac
.T.-Verdadero

Name
Enabled

TxtEdad
.F.-Falso

Text1

Text2

Command1
Name
Caption

CmdAceptar
\<Aceptar

Command2
Name
Caption

CmdLimpiar
\<Limpiar

Command3
Name
CmdSalir
Caption
\<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
Release Thisform
Aplicacin N 3

Procedimiento: Click

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
Label1
Name

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

Caption

Hora

Label2
Name
Caption

LblDespertador
Despertador

Name
FontBold
FontSize

TxtHora
.T.-Verdadero
24

Name
FontBold
FontSize

TxtDespertador
.T.-Verdadero
24

Text1

Text2

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
lOnOff = .F.

Procedimiento: Init

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
Release Thisform

Procedimiento: Click

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

para

correspondientes a este laboratorio.


Aplicacin N 1

guardar

sus

trabajos

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

similar a la figura mostrada:

presentar

una

apariencia

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

objetos segn se indica:


Form1
Name
Caption
MaxButton
MinButton

FrmIngreso
Ingreso de datos
.F.-Falso
.F.-Falso

Label1
Name
Caption

LblNumerador
Numerador?

propiedades

de

los

Label2
Name
Caption

LblDenominador
Denominador?

Name
Value

TxtNumerador
0

Name
Value

TxtDenominador
0

Text1

Text2

Command1
Name
Caption
Default

CmdSimplificar
Simplificar
.T.-Verdadero

Command2
Name
Cancel
Caption
A

continuacin

CmdSalir
.T.-Verdadero
Salir
proceda

ingresar

el

cdigo

que

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

se

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

objetos segn se indica:


Form2
Name
Caption
MaxButton
MinButton

FrmSalida
Salida
.F.-Falso
.F.-Falso

Label1
Name
Caption

LblFraccion
Fraccin simplificada:

Name
Alignment

TxtFraccion
2-Centro

Text1

Command1
Name
Caption

CmdVolver
Volver

de

los

continuacin

proceda

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)

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

Si,

la

observa en la figura siguiente:

En

caso

de

que

el

usuario

elija

la

opcin

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
SpinnerLowValue

SpnAnno
9999
0

Text1
Name
Alignment
Command1

TxtEnLetras
2-Centro

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

#DEFINE vfpYes

#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
Thisform.QueryUnload
Aplicacin N 3

Procedimiento: Click

Este ejercicio consiste en elaborar un formulario que


permita

leer

un

nmero

entero

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:

Name
Alignment

TxtNumero
2-Centro

Name
ScrollBars

EdtTabla
2-Vertical

Text1

Edit1

Command1
Name
Caption
Default
Una

vez

CmdLimpiar
\<Limpiar
.T.-Verdadero
diseada

la

interfaz,

proceda

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 =

Procedimiento: Click

Thisform.Refresh

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

LblTamao
Tamao

Name
Caption

LblEstilo
Estilo

Label5
Name
Caption

LblColor
Color

Combo1
Name

CboFuente

Name

LstTamao

Name
ForeColor

TxtTexto
255, 0, 0

List1

Text1

Check1
Name
Caption

ChkNegrita
Negrita

FontBold

.T.-Verdadero

Check2
Name
Caption
FontItalic

ChkCursiva
Cursiva
.T.-Verdadero

Check3
Name
Caption
FontUnderline

ChkSubrayado
Subrayado
.T.-Verdadero

OptionGroup1
ButtonCount

Option1
Name
ForeColor

OptRojo
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

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

trasladados

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
Caption

LblCurso
Ingrese nuevo curso:

Label2
Name
Caption

LblSeleccionar
Seleccione un curso:

Label3
Name
Caption

LblProgramado
Curso programado:

Name

TxtCurso

Name

LstSeleccionar

Name

LstProgramado

Text1

List1

List2

Command1
Name
Caption
Picture

CmdAgregar
C:\FundVFP\Bitmaps\AddItem.Bmp

Command2
Name
Caption
Picture

CmdAgregarTodo
C:\FundVFP\Bitmaps\AddAll.Bmp

Command3
Name
Caption
Picture

CmdQuitar
C:\FundVFP\Bitmaps\Remove.Bmp

Command4
Name
Caption
Picture

CmdQuitarTodo
C:\FundVFP\Bitmaps\RemoveAll.Bmp

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

#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 consiste en elaborar una aplicacin que

n
permita leer

nmeros de tipo entero, y a continuacin los

visualice

ordenados

en

forma

ascendente

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:

Name
Value

TxtNumero
0

Name

LstNumero

Text1

List1

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

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

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

Nombre
Enabled

TxtCadena
.T.-Verdadero

Nombre
Enabled

TxtInvertida
.F.-Falso

Text1

Text2

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
Parameters cApeNom
nN = Len(Alltrim(cApeNom))
Dimension cNom(nN)
Dimension cApe(nN)
For nI = 1 To nN

Procedimiento: NomApe

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

m1
slida primero se pesa la muestra (
la

estufa

de

120

150

por

), luego se le lleva a
un

tiempo

de

horas

aproximadamente. A continuacin se deja enfriar la muestra y

m2
se pesa nuevamente (

). Finalmente se realiza el siguiente

clculo:

m1 m2
m1

% Humedad 100

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

Das könnte Ihnen auch gefallen