Beruflich Dokumente
Kultur Dokumente
FOXPRO
NIVEL I
INTRODUCCIN A LA
PROGRAMACIN
INTRODUCCIN
Microsoft
Visual FoxPro
GUA DE LABORATORIO N 1
Objetivos
Luego de completar este laboratorio, el estudiante ser capaz de:
nMen = nC
EndIf
EndIf
? "Mayor =" + Str(nMay)
? "Central =" + Str(nCen)
? "Menor =" + Str(nMen)
Para ejecutar su programa dar click en el botn Ejecutar (!) de la Barra de
herramientas Estndar.
Para volver a ejecutar su programa digitar la siguiente orden desde la Ventana
de Comandos:
Do Aplica01
Aplicacin N 2
Un restaurante ofrece un descuento del 10% para consumos entre S/. 30.00 y
S/. 50.00; un descuento del 20% para consumos mayores a S/. 50.00 nuevos
soles; para todos los dems casos no se aplica ningn tipo de descuento. El
ejercicio consiste en elaborar una programa que permita determinar el importe
a pagar por el consumidor.
Para el desarrollo de la presente aplicacin abrir una nueva ventana de edicin
e ingresar el siguiente cdigo:
Close All
Clear
Do While .T.
Input "Consumo S/." To nConsumo
If Type ("nConsumo") = "N"
Exit
EndIf
EndDo
Do Case
Case nConsumo >= 30 And nConsumo <= 50
nImporte = nConsumo * 0.9
Case nConsumo > 50
nImporte = nConsumo * 0.8
Otherwise
nImporte = nConsumo
EndCase
? "Importe a pagar S/." + Str(nImporte)
Aplicacin N 3
El ejercicio consiste en escribir un programa que lea " " enteros y calcule la
suma total, la media aritmtica, el mximo y el mnimo de los datos.
Para el desarrollo de la presente aplicacin, de manera anloga que para los
casos anteriores abrir una nueva ventana de edicin e ingresar el siguiente
cdigo:
Close All
Clear
Input "Ingrese cantidad de nmeros?" To nN
Declare aVector(nN)
For nI = 1 To nN
Input "Nmero [" + Str(nI) + "]?" To aVector(nI)
Next
nMax = aVector[1]
nMin = aVector[1]
nSuma = 0
For nI = 1 To nN
nSuma = nSuma + aVector[nI]
If aVector[nI] > nMax Then
nMax = aVector[nI]
EndIf
If aVector[nI] < nMin Then
nMin = aVector[nI]
EndIf
Next
nMedia = nSuma / nN
? "Suma =" + Str(nSuma)
? "Media =" + Str(nMedia, 10, 2)
? "Mximo=" + Str(nMax)
? "Mnimo=" + Str(nMin)
Aplicacin N 4
A continuacin vamos a escribir una funcin que reciba como argumento de
entrada una cadena de caracteres y la devuelva en forma inversa, por ejemplo
si se ingresa la cadena CORAZON deber retornar NOZAROC.
Para el desarrollo de esta aplicacin proceda de manera similar a los casos
anteriores e ingresar el cdigo que se muestra:
Close All
Clear
Accept "Ingrese una cadena?" To cCadena
? "Cadena invertida =" + CadInv(cCadena)
Function CadInv
Parameters cCadena
nN = Len(Alltrim(cCadena))
Declare cTemporal(nN)
For nI = 1 To nN
cTemporal(nI) = SubStr(cCadena, nI, 1)
Next
cInvertida = ""
For nJ = nN To 1 Step -1
cInvertida = cInvertida + cTemporal(nJ)
Next J
Return cInvertida
Aplicacin N 5
Este ejercicio consiste en escribir un programa que imprima el calendario
correspondiente a un mes si se conoce una fecha del mismo. Por ejemplo si se
ingresa la siguiente fecha MA 24 04 1973 (Martes 24 de Abril de 1973) se
debe obtener:
ABRIL
D
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.
Microsoft
Visual FoxPro
GUA DE LABORATORIO N 2
Objetivos
Luego de completar este laboratorio, el estudiante ser capaz de:
Implementar soluciones mediante programacin orientada a objetos.
Manejar las diferentes propiedades y eventos del formulario.
Aadir controles a un formulario.
Establecer las propiedades de los controles.
Trabajar con procedimientos de eventos.
Consideraciones
Para el desarrollo del presente laboratorio Ud. deber crear una
carpeta C:\FundVFP\Lab2, para guardar sus trabajos correspondientes a este
laboratorio.
Aplicacin N 1
El ejercicio consiste en elaborar una aplicacin que permita leer un nmero
real de la forma "eee.ddd" e imprima el mayor valor entre la parte entera y la
parte decimal.
Name
FrmAplica01
Caption
MaxButton
.F.-Falso
MinButton
.F.-Falso
Name
LblX
Caption
Name
LblMay
Caption
Mayor:
Name
TxtX
InputMask
999.999
Value
Name
TxtMay
InputMask
999
Value
Label1
Label2
Text1
Text2
Command1
Name
CmdAceptar
Caption
\<Aceptar
Default
.T.-Verdadero
Command2
Name
CmdLimpiar
Caption
\<Limpiar
Command3
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
Thisform.TxtX.Value = 0
Thisform.TxtMay.Value = 0
Procedimiento: Click
Thisform.TxtX.Setfocus
Thisform.Refresh
Finalmente proceder a ingresar el siguiente cdigo para el control CmdSalir:
Objeto: CmdSalir
Procedimiento: Click
Release Thisform
A continuacin guarde su aplicacin como FrmAplica01, luego proceda a
ejecutarla. Para ello ingrese lo siguiente en la Ventana de Comandos:
Do Form FrmAplica01
Debe funcionar sin problemas. Pruebe ingresando diferentes valores. En caso
que falle revise y corrija.
Aplicacin N 2
En este ejercicio vamos a crear un formulario para calcular la edad de una
persona a partir de su fecha de nacimiento.
Name
FrmEdad
Caption
MaxButton
.F.-Falso
MinButton
.F.-Falso
Name
LblFecNac
Caption
Fecha de nacimiento:
Name
LblEdad
Caption
Su edad es:
Name
TxtFecNac
Enabled
.T.-Verdadero
Name
TxtEdad
Enabled
.F.-Falso
Label1
Label2
Text1
Text2
Command1
Name
CmdAceptar
Caption
\<Aceptar
Command2
Name
CmdLimpiar
Caption
\<Limpiar
Command3
Name
CmdSalir
Caption
\<Salir
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
Thisform.TxtFecNac.Value = ""
Procedimiento: Click
Thisform.TxtEdad.Value = ""
Thisform.TxtFecNac.Setfocus
Thisform.Refresh
Objeto: CmdSalir
Procedimiento: Click
Release Thisform
Aplicacin N 3
Este ejercicio consiste en elaborar un formulario que simule el funcionamiento
de un reloj despertador digital. La aplicacin debe permitir al usuario ingresar
la hora a la que desea ser avisado. El diseo de la interfaz debe ser similar a la
figura siguiente:
Name
FrmReloj
Caption
MaxButton
.F.-Falso
MinButton
.F.-Falso
Name
LblHora
Caption
Hora
Name
LblDespertador
Caption
Despertador
Name
TxtHora
FontBold
.T.-Verdadero
FontSize
24
Name
TxtDespertador
FontBold
.T.-Verdadero
FontSize
24
Label1
Label2
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
Procedimiento: Load
Public lOnOff
Objeto: FrmReloj
Procedimiento: Init
lOnOff = .F.
Thisform.TxtDespertador.Value = "00:00:00"
Thisform.Refresh
Objeto: Timer1
Procedimiento: Timer
Objeto: CmdOnOff
Procedimiento: Click
If lOnOff Then
lOnOff = .F.
Thisform.CmdOnOff.Caption = "\<Activar"
Else
lOnOff = .T.
Thisform.CmdOnOff.Caption = "\<Desactivar"
EndIf
Thisform.Refresh
Objeto: CmdTerminar
Procedimiento: Click
Release Thisform
Aplicacin N 4
Se tiene un cajero automtico el cual permite manipular cierta cantidad de
dinero para lo cual dispone de los siguientes billetes: S/. 10.00, S/. 20.00, S/.
50.00, S/. 100.00 y S/. 200.00. Elaborar una aplicacin que permita la lectura
de la cantidad a retirar la cual debe ser mltiplo de 10 (caso contrario debe
solicitar al usuario que ingrese un valor correcto, no debe aceptar la lectura de
valores que no cumplan esta condicin). La aplicacin debe indicar el menor
nmero de billetes a utilizar. El diseo de la interfaz debe ser similar a la
siguiente figura:
Microsoft
Visual FoxPro
GUA DE LABORATORIO N 3
Objetivos
Luego de completar este laboratorio, el estudiante ser capaz de:
Label1
Name
FrmIngreso
Caption
Ingreso de datos
MaxButton
.F.-Falso
MinButton
.F.-Falso
Name
LblNumerador
Caption
Numerador?
Name
LblDenominador
Caption
Denominador?
Name
TxtNumerador
Value
Name
TxtDenominador
Value
Label2
Text1
Text2
Command1
Name
CmdSimplificar
Caption
Simplificar
Default
.T.-Verdadero
Command2
Name
CmdSalir
Cancel
.T.-Verdadero
Caption
Salir
Procedimiento: Click
nNumerador = Thisformset.FrmIngreso.TxtNumerador.Value
nDenominador = Thisformset.FrmIngreso.TxtDenominador.Value
Procedimiento: Click
Release Thisformset
Luego proceda a ubicar los siguientes controles sobre el segundo formulario
(Form2):
1 etiqueta
1 caja de texto
1 botn de comando
Seguidamente debe establecer las propiedades de los objetos segn se indica:
Form2
Name
FrmSalida
Caption
Salida
MaxButton
.F.-Falso
MinButton
.F.-Falso
Name
LblFraccion
Caption
Fraccin simplificada:
Name
TxtFraccion
Alignment
2-Centro
Label1
Text1
Command1
Name
CmdVolver
Caption
Volver
Procedimiento: Activate
cNumerador = Str(nNumerador)
cDenominador = Str(nDenominador)
cFraccion = cNumerador + " / " + cDenominador
Thisformset.FrmSalida.TxtFraccion.Value = cFraccion
Thisformset.Refresh
Objeto: CmdVolver
Procedimiento: Click
Thisformset.FrmSalida.Hide
Thisformset.FrmIngreso.Show
Thisformset.Refresh
Finalmente proceda a ingresar el cdigo que se indica a continuacin:
Objeto: Formset1
Procedimiento: Load
Public nNumerador
Public nDenominador
Public nC
Objeto: Formset1
Procedimiento: Init
Thisformset.FrmSalida.Hide
Thisformset.Refresh
Aplicacin N 2
Este ejercicio consiste en elaborar una aplicacin que acepte fechas como tres
nmeros (dd, mm, aaaa) y las visualice del modo usual. A manera de ejemplo
considere lo siguiente:
En caso de que el usuario elija la opcin Si, la aplicacin debe terminar. Caso
contrario, es decir si el usuario elige la opcin No, se debe proseguir con la
aplicacin.
Para el desarrollo de esta aplicacin, proceda a ubicar los siguientes controles
en el formulario:
4 etiquetas
3 controles numricos
1 caja de texto
3 botones de comando
En seguida proceda a establecer las propiedades segn se indica:
Form1
Name
FrmFecha
Caption
Fecha en letras
MaxButton
.F.-Falso
MinButton
.F.-Falso
Name
LblDia
AutoSize
.T.-Verdadero
Caption
Da:
Name
LblMes
AutoSize
.T.-Verdadero
Caption
Mes:
Name
LblAnno
AutoSize
.T.-Verdadero
Label1
Label2
Label3
Caption
Ao:
Name
LblEnLetras
AutoSize
.T.-Verdadero
Caption
En letras:
Label4
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
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 4
#DEFINE vfpYes 6
#DEFINE vfpQuestion 32
If MessageBox("Desea terminar la aplicacin?", ;
vfpQuestion + vfpYesNo, "Pregunta") = vfpYes Then
Release Thisform
Else
NoDefault
EndIf
Objeto: CmdAceptar
Procedimiento: Click
cBarra = "/"
cFecha = Thisform.SpnDia.Text + cBarra + Thisform.SpnMes.Text ;
+ cBarra + Thisform.SpnAnno.Text
dFecha = Ctod(cFecha)
cNomDia = Cdow(dFecha)
cDia = Str(Day(dFecha), 2)
cMes = Cmonth(dFecha)
cAnno = Str(Year(dFecha), 4)
cFecha = cNomDia + " " + cDia + " de " + cMes + " de " + cAnno
Thisform.TxtEnLetras.Value = cFecha
Thisform.Refresh
Objeto: CmdLimpiar
Procedimiento: Click
Thisform.SpnDia.Value = 0
Thisform.SpnMes.Value = 0
Thisform.SpnAnno.Value = 0
Thisform.TxtEnLetras.Value = ""
Thisform.SpnDia.Setfocus
Thisform.Refresh
Objeto: CmdSalir
Procedimiento: Click
Thisform.QueryUnload
Aplicacin N 3
Este ejercicio consiste en elaborar un formulario que permita leer un nmero
entero y visualice su tabla se multiplicar. Para construir la tabla de multiplicar
FrmTabla
Caption
Tabla de multiplicar
MaxButton
.F.-Falso
MinButton
.F.-Falso
Name
LblNumero
Caption
Ingrese un nmero:
Label1
Text1
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
Elaborar una aplicacin que acepte como entrada la reserva de agua de un
depsito y los litros que se consumen a la semana. La aplicacin debe dar
como resultado las cantidades de agua que quedan al final de cada semana. El
proceso finalizar cuando no quede agua suficiente para una semana. Utilizar
otro formulario para mostrar la salida. El diseo de la interfaz debe ser similar
a la figura mostrada:
Microsoft
Visual FoxPro
GUA DE LABORATORIO N 4
Objetivos
Luego de completar este laboratorio, el estudiante ser capaz de:
Usar casillas de verificacin y botones de opcin para alternar entre
uno o ms valores.
Establecer las principales propiedades y mtodos de las listas
desplegables y cuadros combinados.
Consideraciones
Para el desarrollo del presente laboratorio Ud. deber crear una
carpeta C:\FundVFP\Lab4, para guardar sus trabajos correspondientes a este
laboratorio.
Aplicacin N 1
Este ejercicio consiste en elaborar una aplicacin que permita cambiar el
aspecto de una caja de texto. El usuario debe elegir el tipo de fuente a utilizar,
el estilo, el color y el tamao. El diseo de la interfaz debe ser similar a:
FrmEditor
AutoCenter
.T.-Verdadero
Caption
Editor
MaxButton
.F.-Falso
MinButton
.F.-Falso
Name
LblTexto
Caption
Texto
Name
LblFuente
Caption
Fuente
Name
LblTamao
Caption
Tamao
Name
LblEstilo
Caption
Estilo
Name
LblColor
Caption
Color
Label1
Label2
Label3
Label4
Label5
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
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
Procedimiento: Init
Thisform.CboFuente.AddItem("Arial")
Thisform.CboFuente.AddItem("Arial Black")
Thisform.CboFuente.AddItem("Courier New")
Thisform.CboFuente.AddItem("Garamond")
Thisform.CboFuente.AddItem("Impact")
Thisform.CboFuente.AddItem("MS Sans Serif")
Thisform.CboFuente.AddItem("Technical")
Thisform.CboFuente.AddItem("Times New Roman")
For nI = 8 To 20 Step 2
Thisform.LstTamao.AddItem(Alltrim(Str(nI)))
Next
Objeto: FrmEditor
Procedimiento: QueryUnload
#DEFINE vfpYesNo 4
#DEFINE vfpYes 6
#DEFINE vfpQuestion 32
If MessageBox("Desea terminar la aplicacin?", ;
vfpQuestion + vfpYesNo, "Pregunta") = vfpYes Then
Release Thisform
Else
NoDefault
EndIf
Objeto: CboFuente
Procedimiento: Click
Thisform.TxtTexto.FontName = Thisform.CboFuente.Value
Thisform.Refresh
Objeto: LstTamao
Procedimiento: Click
nTamao = Val(Thisform.LstTamao.Value)
Thisform.TxtTexto.FontSize = nTamao
Thisform.Refresh
Objeto: ChkNegrita
If Thisform.ChkNegrita.Value = 1 Then
Thisform.TxtTexto.FontBold = .T.
Procedimiento: Click
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
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 parte de una lista de espera antes de
ser programado para su dictado. Los cursos deben ser seleccionados de la lista
de espera y trasladados a la lista de cursos programados y viceversa. El diseo
de la interfaz debe ser similar a la figura mostrada:
Aplicacin N 2
Este ejercicio consiste en desarrollar una aplicacin que permita ingresar el
nombre de un curso, el cual pasa a formar parte de una lista de espera antes de
ser programado para su dictado. Los cursos deben ser seleccionados de la lista
de espera y trasladados a la lista de cursos programados y viceversa. El diseo
de la interfaz debe ser similar a la figura mostrada:
FrmCursos
Caption
Cursos
MaxButton
.F.-Falso
MinButton
.F.-Falso
Name
LblCurso
Caption
Label1
Label2
Name
LblSeleccionar
Caption
Seleccione un curso:
Name
LblProgramado
Caption
Curso programado:
Name
TxtCurso
Name
LstSeleccionar
Name
LstProgramado
Label3
Text1
List1
List2
Command1
Name
CmdAgregar
Caption
Picture
C:\FundVFP\Bitmaps\AddItem.Bmp
Command2
Name
CmdAgregarTodo
Caption
Picture
C:\FundVFP\Bitmaps\AddAll.Bmp
Command3
Name
Caption
CmdQuitar
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.
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
#DEFINE vfpYesNo 4
#DEFINE vfpYes 6
Procedimiento: QueryUnload
#DEFINE vfpQuestion 32
If MessageBox("Desea terminar la aplicacin?", ;
vfpQuestion + vfpYesNo, "Pregunta") = vfpYes Then
Release Thisform
Else
NoDefault
EndIf
Aplicacin N 3
El ejercicio consiste en elaborar una aplicacin que permita leer nmeros de
tipo entero, y a continuacin los visualice ordenados en forma ascendente o
descendente. Utilice el mtodo de la burbuja para realizar la ordenacin.
Form1
Nombre
FrmBurbuja
Caption
MaxButton
.F.-Falso
MinButton
.F.-Falso
Name
LblNumero
Caption
Name
LblOrden
Caption
Orden:
Name
LblLista
Caption
Lista de nmeros:
Name
TxtNumero
Value
Name
LstNumero
Label1
Label2
Label3
Text1
List1
Option1
Nombre
OptAscendente
Caption
Ascendente
Option2
Nombre
OptDescendente
Caption
Descendente
Command1
Nombre
CmdAnnadir
Caption
\<Aadir
Default
True
Command2
Nombre
CmdOrdenar
Caption
\<Ordenar
Command3
Nombre
CmdSalir
Cancel
.T.-Verdadero
Caption
\<Salir
Picture
Procedimiento: QueryUnload
#DEFINE vfpYesNo 4
#DEFINE vfpYes 6
#DEFINE vfpQuestion 32
If MessageBox("Desea terminar la aplicacin?", ;
Procedimiento: Click
Thisform.LstNumero.AddItem(Thisform.TxtNumero.Value)
Thisform.TxtNumero.Value = ""
Thisform.TxtNumero.SetFocus
Objeto: CmdOrdenar
Procedimiento: Click
nN = Thisform.LstNumero.ListCount
Dimension nA(nN) As Integer
For nI = 1 To nN
nA(nI) = Thisform.LstNumero.List(nI)
Next
If Thisform.OptionGroup1.OptAscendente.Value = 1 Then
For nI = 1 To nN - 1
For nJ = nI + 1 To nN
If nA(nI) > nA(nJ) Then
nT = nA(nI)
nA(nI) = nA(nJ)
nA(nJ) = nT
EndIf
Next
Next
EndIf
If Thisform.OptionGroup1.OptDescendente.Value = 1 Then
For nI = 1 To nN - 1
For nJ = nI + 1 To nN
If nA(nI) < nA(nJ) Then
nT = nA(nI)
nA(nI) = nA(nJ)
nA(nJ) = nT
EndIf
Next
Next
EndIf
Thisform.LstNumero.Clear
For nI = 1 To nN
Thisform.LstNumero.List(nI) = nA(nI)
Next
Objeto: CmdSalir
Procedimiento: Click
Thisform.QueryUnload
Aplicacin N 4
Desarrollar una aplicacin que permita realizar consultas acerca de un
determinado curso, los cuales se mostraran en una lista. El usuario debe
seleccionar un curso y en seguida se debe presentar el nombre del profesor
encargado del curso (teora), el nombre del jefe de prctica (laboratorio), as
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
FrmPrueba_Cadena
Caption
Cadena invertida
MaxButton
.F.-Falso
MinButton
.F.-Falso
Nombre
LblCadena
Caption
Label1
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
Command2
Nombre
CmdLimpiar
Caption
\<Limpiar
Command3
Nombre
CmdSalir
Cancel
.T.-Verdadero
Caption
\<Salir
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.
Procedimiento: NomApe
Parameters cApeNom
nN = Len(Alltrim(cApeNom))
Dimension cNom(nN)
Dimension cApe(nN)
For nI = 1 To nN
If SubStr(cApeNom, nI, 1) = "," Then
Exit
EndIf
Next
cApe = SubStr(cApeNom, 1, nI-1)
cNom = SubStr(cApeNom, nI + 1, nN - nI)
Procedimiento: Humedad
nMasa1 = Val(Thisform.TxtMasa1.Value)
Procedimiento: Click
nMasa2 = Val(Thisform.TxtMasa2.Value)
nHumedad = Thisform.Humedad(nMasa1, nMasa2)
Thisform.TxtHumedad.Value = Str(nHumedad, 10, 4)
Thisform.Refresh
Aplicacin N 4
Escriba un mtodo que reciba como parmetro la fecha de nacimiento del
usuario. Debe retornar el signo zodiacal, el da de nacimiento y la cantidad de
das vividos hasta la fecha actual. Utilice un formulario de prueba para
verificar la funcionalidad del mtodo creado.
Sugerencia
Retorne un nico valor como una cadena de caracteres, en la cual estn
incluidos los valores que se piden. A manera de ejemplo considere lo
siguiente:
cRpta = cZodiaco + cDiaNacimiento + cDiasVividos + cFechaHoy
Return cRpta