NIVEL I
INTRODUCCIN A LA PROGRAMACIN
Elaborado por
CARLOS CASTILLO PERALTA
cc_peralta@hotmail.com
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
con
la
de
la
parte
ejemplos
desean
compartirla
con
otros
colegas,
me
agradara
ya
les
deseo
la
mejor
de
las
suertes
en
el
Microsoft
Visual FoxPro
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
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)
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
cc_peralta@hotmail.com Pg. 5
= + Str(nSuma)
cc_peralta@hotmail.com Pg. 6
argumento
de
entrada
una
cadena
de
caracteres
la
ejercicio
consiste
en
escribir
un
programa
que
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
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
cc_peralta@hotmail.com Pg. 9
Controles
de
Formularios.
Se
presentar
una
cc_peralta@hotmail.com Pg. 10
Form1
Name
FrmAplica01
Caption
MaxButton
.F.-Falso
MinButton
.F.-Falso
Label1
Name
LblX
Caption
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
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,
este
la
ejercicio
edad
de
vamos
una
persona
crear
a
un
partir
formulario
de
su
para
fecha
de
nacimiento.
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
cc_peralta@hotmail.com Pg. 14
Objeto: FrmEdad
Procedimiento: Load
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
cc_peralta@hotmail.com Pg. 15
Este
ejercicio
consiste
en
elaborar
un
formulario
que
FrmReloj
Caption
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
cc_peralta@hotmail.com Pg. 17
Procedimiento: Load
Public lOnOff
Objeto: FrmReloj
Procedimiento: Init
lOnOff = .F.
Thisform.TxtDespertador.Value = 00:00:00
Thisform.Refresh
Objeto: Timer1
Procedimiento: Timer
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,
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.
cc_peralta@hotmail.com Pg. 20
apreciar
Formulario
nada
en
especial).
elija
la
opcin
Nuevamente
Agregar
nuevo
vaya
al
Men
formulario.
El
debe
establecer
las
propiedades
de
los
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
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
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
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:
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
Procedimiento: Load
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
un
propiedades
control
similares
cuadro
a
un
de
cuadro
edicin,
de
el
texto,
cual
pero
tiene
permite
cc_peralta@hotmail.com Pg. 29
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
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
Microsoft
Visual FoxPro
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
las
principales
propiedades
mtodos
de
las
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
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
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,
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
Procedimiento: Click
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
trasladados
la
lista
de
cursos
programados
FrmCursos
Caption
Cursos
cc_peralta@hotmail.com Pg. 39
MaxButton
.F.-Falso
MinButton
.F.-Falso
Label1
Name
LblCurso
Caption
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
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
cc_peralta@hotmail.com Pg. 43
FrmBurbuja
Caption
MaxButton
.F.-Falso
MinButton
.F.-Falso
Label1
Name
LblNumero
Caption
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
cc_peralta@hotmail.com Pg. 45
Caption
\<Ordenar
Command3
Nombre
CmdSalir
Cancel
.T.-Verdadero
Caption
\<Salir
Picture
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
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
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.
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
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
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,
Se
debe
presentar
una
ventana
similar
la
figura
siguiente:
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
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.
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
de
120
150
por
un
tiempo
de
horas
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.
cc_peralta@hotmail.com Pg. 53
Procedimiento: Humedad
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
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
Prximamente
Nivel II
cc_peralta@hotmail.com Pg. 55