Guía foxpro
Transcript of Guía foxpro
CENTRO DE BACHILLERATO TECNOLÓGICO
industrial y de servicios No. 130
MICROSOFT VISUAL FOXPRO
APLICAR LOS PRINCIPIOS DE PROGRAMACIÓN
PARA LA SOLUCIÓN DE PROBLEMAS
GUÍA DE PRÁCTICAS
PERIODO No. 3
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 1
Microsoft Visual FoxProGUÍA DE LABORATORIO Nº 1
Objetivos
Luego de completar este laboratorio, el estudiante será
capaz de:
Implementar soluciones mediante programación orientada a
objetos.
Manejar las diferentes propiedades y eventos del formulario.
Añadir 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:\Unidad3_nl\ para guardar sus trabajos
correspondientes a este laboratorio.
Práctica Nº 1
El ejercicio consiste en elaborar una Práctica que permita
leer un número real de la forma “eee.ddd” e imprima el mayor
valor entre la parte entera y la parte decimal.
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 2
Para el desarrollo de esta Práctica, en primer lugar debe
crear un nuevo formulario. Para ello digite lo siguiente en la
Ventana de Comandos:
Create Form
A continuación seleccione del Menú Ver, la opción 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
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 3
Para ubicar un control en el formulario, simplemente dar
click en el control deseado y luego dar click en el formulario
en la posición que se le desea ubicar. Adicionalmente puede
utilizar la barra de herramientas Diseño para obtener una mejor
presentación.
A continuación proceda a establecer las propiedades de los
objetos según se indica, para ello dar click derecho sobre el
control y del menú emergente que se presenta elegir la opción
Propiedades.
Form1
Name FrmAplica01
Caption Mayor valor de un número real
MaxButton .F.-Falso
MinButton .F.-Falso
Label1
Name LblX
Caption Ingrese un real de la forma eee.ddd?
Label2
Name LblMay
Caption Mayor:
Text1
Name TxtX
InputMask 999.999
Value 0
Text2
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 4
Name TxtMay
InputMask 999
Value 0
Command1
Name CmdAceptar
Caption \<Aceptar
Default .T.-Verdadero
Command2
Name CmdLimpiar
Caption \<Limpiar
Command3
Name CmdSalir
Cancel .T.-Verdadero
Caption \<Salir
A continuación dar doble click sobre el control CmdAceptar
y proceda a ingresar el código 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
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 5
EndIf
Thisform.TxtMay.Value = nMay
Thisform.Refresh
De manera análoga ingresar el siguiente código 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 código para el control CmdSalir:
Objeto: CmdSalir Procedimiento: Click
Release Thisform
A continuación guarde su Práctica 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.
Práctica Nº 2
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 6
En este ejercicio vamos a crear un formulario para
calcular la edad de una persona a partir de su fecha de
nacimiento.
Para el desarrollo de esta Práctica, 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 según se
indica a continuación:
Form1
Name FrmEdad
Caption
MaxButton .F.-Falso
MinButton .F.-Falso
Label1
Name LblFecNac
Caption Fecha de nacimiento:
Label2
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 7
Name LblEdad
Caption Su edad es:
Text1
Name TxtFecNac
Enabled .T.-Verdadero
Text2
Name TxtEdad
Enabled .F.-Falso
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 código:
Objeto: FrmEdad Procedimiento: Load
Set Date French
Set Century On
Objeto: FrmEdad Procedimiento: Init
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 8
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) + “ años”
Thisform.Refresh
Objeto: CmdLimpiar Procedimiento: Click
Thisform.TxtFecNac.Value = “”
Thisform.TxtEdad.Value = “”
Thisform.TxtFecNac.Setfocus
Thisform.Refresh
Objeto: CmdSalir Procedimiento: Click
Release Thisform
Práctica Nº 3
Se tiene un cajero automático el cual permite manipular
cierta cantidad de dinero para lo cual dispone de los
siguientes billetes: $10.00, $20.00, $50.00, $100.00 y $200.00.
Elaborar una Práctica que permita la lectura de la cantidad a
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 9
retirar la cual debe ser múltiplo de 10 (caso contrario debe
solicitar al usuario que ingrese un valor correcto, no debe
aceptar la lectura de valores que no cumplan esta condición).
La Práctica debe indicar el menor número de billetes a
utilizar. El diseño de la interfaz debe ser similar a la
siguiente figura:
Microsoft Visual FoxProGUÍA DE LABORATORIO Nº 2
Objetivos
Luego de completar este laboratorio, el estudiante será
capaz de:
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 10
Manejar las diferentes propiedades y métodos del conjunto de
formularios.
Identificar y utilizar los controles estándar adicionales.
Utilizar cajas de diálogo predefinidas para visualizar
mensajes.
Consideraciones
Para el desarrollo del presente laboratorio Ud. deberá
crear una carpeta C:\Unidad3_nl, para guardar sus trabajos
correspondientes a este laboratorio.
Práctica Nº 4
El ejercicio consiste en crear una Práctica que permita
leer una fracción y de como resultado la fracción simplificada.
Esto es, que halle la fracción irreductible equivalente.
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 11
Para el desarrollo de esta Práctica proceda a crear un
nuevo formulario y luego vaya al Menú Formulario y elija la
opción Crear conjunto de formularios (no se preocupe, pues no
se apreciará nada en especial). Nuevamente vaya al Menú
Formulario y elija la opción Agregar nuevo formulario. El
Diseñador de formularios debe presentar una apariencia similar
a la figura mostrada:
A continuación proceda a ubicar los siguientes controles
sobre el primer formulario (Form1):
2 etiquetas
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 12
2 cajas de texto
2 botones de comando
Seguidamente debe establecer las propiedades de los
objetos según se indica:
Form1
Name FrmIngreso
Caption Ingreso de datos
MaxButton .F.-Falso
MinButton .F.-Falso
Label1
Name LblNumerador
Caption Numerador?
Label2
Name LblDenominador
Caption Denominador?
Text1
Name TxtNumerador
Value 0
Text2
Name TxtDenominador
Value 0
Command1
Name CmdSimplificar
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 13
Caption Simplificar
Default .T.-Verdadero
Command2
Name CmdSalir
Cancel .T.-Verdadero
Caption Salir
A continuación proceda a ingresar el código 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
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 14
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 botón de comando
Seguidamente debe establecer las propiedades de los
objetos según se indica:
Form2
Name FrmSalida
Caption Salida
MaxButton .F.-Falso
MinButton .F.-Falso
Label1
Name LblFraccion
Caption Fracción simplificada:
Text1
Name TxtFraccion
Alignment 2-Centro
Command1
Name CmdVolver
Caption Volver
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 15
A continuación proceda a ingresar el código 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 código que se indica a
continuación:
Objeto: Formset1 Procedimiento: Load
Public nNumerador
Public nDenominador
Public nC
Objeto: Formset1 Procedimiento: Init
Thisformset.FrmSalida.Hide
Thisformset.Refresh
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 16
Práctica Nº 5
Este ejercicio consiste en elaborar una Práctica que
acepte fechas como tres números (dd, mm, aaaa) y las visualice
del modo usual. A manera de ejemplo considere lo siguiente:
Cuando el usuario haga click en el botón Salir o en el
botón Cerrar de la barra de título del formulario, se debe
confirmar si desea terminar la Práctica, tal como se observa en
la figura siguiente:
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 17
En caso de que el usuario elija la opción Si, la Práctica
debe terminar. Caso contrario, es decir si el usuario elige la
opción No, se debe proseguir con la Práctica.
Para el desarrollo de esta Práctica, proceda a ubicar los
siguientes controles en el formulario:
4 etiquetas
3 controles numéricos
1 caja de texto
3 botones de comando
En seguida proceda a establecer las propiedades según se
indica:
Form1
Name FrmFecha
Caption Fecha en letras
MaxButton .F.-Falso
MinButton .F.-Falso
Label1
Name LblDia
AutoSize .T.-Verdadero
Caption Día:
Label2
Name LblMes
AutoSize .T.-Verdadero
Caption Mes:
Label3
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 18
Name LblAnno
AutoSize .T.-Verdadero
Caption Año:
Label4
Name LblEnLetras
AutoSize .T.-Verdadero
Caption En letras:
Spinner1
Name SpnDia
SpinnerHighValue 31
SpinnerLowValue 1
Spinner2
Name SpnMes
SpinnerHighValue 12
SpinnerLowValue 1
Spinner3
Name SpnAnno
SpinnerHighValue 9999
SpinnerLowValue 0
Text1
Name TxtEnLetras
Alignment 2-Centro
Command1
Name CmdAceptar
Caption \<Aceptar
Default .T.-Verdadero
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 19
Command2
Name CmdLimpiar
Caption \<Limpiar
Command3
Name CmdSalir
Cancel .T.-Verdadero
Caption \<Salir
Una vez establecidas las propiedades proceda a ingresar el
código que se indica a continuación:
Objeto: FrmFecha Procedimiento: Load
Set Date French
Set Century On
Objeto: FrmFecha Procedimiento: QueryUnload
#DEFINE vfpYesNo 4
#DEFINE vfpYes 6
#DEFINE vfpQuestion 32
If MessageBox(“¿Desea terminar la Práctica?”, ;
vfpQuestion + vfpYesNo, “Pregunta”) = vfpYes Then
Release Thisform
Else
NoDefault
EndIf
Objeto: CmdAceptar Procedimiento: Click
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 20
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
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 21
Práctica Nº 6
Este ejercicio consiste en elaborar un formulario que
permita leer un número entero y visualice su tabla se
multiplicar. Para construir la tabla de multiplicar vamos a
utilizar un control cuadro de edición, el cual tiene
propiedades similares a un cuadro de texto, pero permite
escribir texto en líneas diferentes.
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 22
Para el desarrollo de esta Práctica, proceda a ubicar los
siguientes controles en el formulario:
1 etiqueta
1 caja de texto
1 cuadro de edición
1 botón de comandos
En seguida proceda a establecer las propiedades según se
indica:
Form1
Name FrmTabla
Caption Tabla de multiplicar
MaxButton .F.-Falso
MinButton .F.-Falso
Label1
Name LblNumero
Caption Ingrese un número:
Text1
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 23
Name TxtNumero
Alignment 2-Centro
Edit1
Name EdtTabla
ScrollBars 2-Vertical
Command1
Name CmdLimpiar
Caption \<Limpiar
Default .T.-Verdadero
Una vez diseñada la interfaz, proceda a ingresar el código que se indica a continuación:
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
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 24
Práctica Nº 7
Elaborar una Práctica que acepte como entrada la reserva
de agua de un depósito y los litros que se consumen a la
semana. La Práctica 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 diseño de la interfaz
debe ser similar a la figura mostrada:
Microsoft Visual FoxProGUÍA DE LABORATORIO Nº 3
Objetivos
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 25
Luego de completar este laboratorio, el estudiante será
capaz de:
Usar casillas de verificación y botones de opción para
alternar entre uno o más valores.
Establecer las principales propiedades y métodos de las
listas desplegables y cuadros combinados.
Consideraciones
Para el desarrollo del presente laboratorio Ud. deberá
crear una carpeta C:\Unidad3_nl, para guardar sus trabajos
correspondientes a este laboratorio.
Práctica Nº 8
Este ejercicio consiste en elaborar una Práctica 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 tamaño. El diseño de la interfaz debe ser similar a:
Para el desarrollo de esta Práctica, proceda a ubicar los
siguientes controles en el formulario:
5 etiquetas
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 26
1 caja de texto
1 cuadro combinado
1 lista
3 casillas de verificación
1 grupo de botones de opción
1 botón de comando
En seguida proceda a establecer las propiedades según 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 LblTamaño
Caption Tamaño
Label4
Name LblEstilo
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 27
Caption Estilo
Label5
Name LblColor
Caption Color
Combo1
Name CboFuente
List1
Name LstTamaño
Text1
Name TxtTexto
ForeColor 255, 0, 0
Check1
Name ChkNegrita
Caption Negrita
FontBold .T.-Verdadero
Check2
Name ChkCursiva
Caption Cursiva
FontItalic .T.-Verdadero
Check3
Name ChkSubrayado
Caption Subrayado
FontUnderline .T.-Verdadero
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 28
OptionGroup1
ButtonCount 3
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 código que se muestra a continuación:
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”)
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 29
Thisform.CboFuente.AddItem(“Technical”)
Thisform.CboFuente.AddItem(“Times New Roman”)
For nI = 8 To 20 Step 2
Thisform.LstTamaño.AddItem(Alltrim(Str(nI)))
Next
Objeto: FrmEditor Procedimiento: QueryUnload
#DEFINE vfpYesNo 4
#DEFINE vfpYes 6
#DEFINE vfpQuestion 32
If MessageBox(“¿Desea terminar la Práctica?”, ;
vfpQuestion + vfpYesNo, “Pregunta”) = vfpYes Then
Release Thisform
Else
NoDefault
EndIf
Objeto: CboFuente Procedimiento: Click
Thisform.TxtTexto.FontName = Thisform.CboFuente.Value
Thisform.Refresh
Objeto: LstTamaño Procedimiento: Click
nTamaño = Val(Thisform.LstTamaño.Value)
Thisform.TxtTexto.FontSize = nTamaño
Thisform.Refresh
Objeto: ChkNegrita Procedimiento: Click
If Thisform.ChkNegrita.Value = 1 Then
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 30
Thisform.TxtTexto.FontBold = .T.
Else
Thisform.TxtTexto.FontBold = .F.
EndIf
Thisform.RefreshObjeto: 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
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 31
Objeto: OptAzul Procedimiento: Click
Thisform.TxtTexto.ForeColor = RGB(0, 0, 255)
Thisform.Refresh
Objeto: CmdSalir Procedimiento: Click
Thisform.QueryUnload
Práctica Nº 9
Este ejercicio consiste en desarrollar una Práctica 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 diseño de la interfaz debe ser similar a la
figura mostrada:
Para el desarrollo de esta Práctica proceda a ubicar los
siguientes controles en el formulario:
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 32
3 etiquetas
1 cuadro de texto
2 listas
5 botones de comando
En seguida proceda a establecer las propiedades según se
indica:
Form1
Name FrmCursos
Caption Cursos
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:
Text1
Name TxtCurso
List1
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 33
Name LstSeleccionar
List2
Name LstProgramado
Command1
Name CmdAgregar
Caption
Picture C:\Unidad3_nl\Bitmaps\
AddItem.Bmp
Command2
Name CmdAgregarTodo
Caption
Picture C:\Unidad3_nl\Bitmaps\AddAll.Bmp
Command3
Name CmdQuitar
Caption
Picture C:\Unidad3_nl\Bitmaps\Remove.Bmp
Command4
Name CmdQuitarTodo
Caption
Picture C:\Unidad3_nl\Bitmaps\
RemoveAll.Bmp
Command5
Name CmdAnnadir
Caption \<Añadir
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 34
En seguida proceda a ingresar el código 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.
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 35
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
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 36
Thisform.LstProgramado.Clear
Thisform.CmdQuitar.Enabled = .F.
Thisform.CmdQuitarTodo.Enabled = .F.
Thisform.Refresh
Objeto: FrmCursos Procedimiento: QueryUnload
#DEFINE vfpYesNo 4
#DEFINE vfpYes 6
#DEFINE vfpQuestion 32
If MessageBox(“¿Desea terminar la Práctica?”, ;
vfpQuestion + vfpYesNo, “Pregunta”) = vfpYes Then
Release Thisform
Else
NoDefault
EndIf
Práctica Nº 10
El ejercicio consiste en elaborar una Práctica que permita
leer n números de tipo entero, y a continuación los visualice
ordenados en forma ascendente o descendente. Utilice el método
de la burbuja para realizar la ordenación.
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 37
Para el desarrollo de esta Práctica, proceda a ubicar los
siguientes controles en el formulario:
3 etiquetas
1 caja de texto
1 lista
1 grupo de botones de opción
3 botones de comando
En seguida proceda a establecer las propiedades según se
indica:
Form1
Nombre FrmBurbuja
Caption Ordenación por burbuja
MaxButton .F.-Falso
MinButton .F.-Falso
Label1
Name LblNumero
Caption Ingrese un nuevo número:
Label2
Name LblOrden
Caption Orden:
Label3
Name LblLista
Caption Lista de números:
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 38
Text1
Name TxtNumero
Value 0
List1
Name LstNumero
Option1
Nombre OptAscendente
Caption Ascendente
Option2
Nombre OptDescendente
Caption Descendente
Command1
Nombre CmdAnnadir
Caption \<Añadir
Default True
Command2
Nombre CmdOrdenar
Caption \<Ordenar
Command3
Nombre CmdSalir
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 39
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
código que se indica a continuación:
Objeto: FrmBurbuja Procedimiento: QueryUnload
#DEFINE vfpYesNo 4
#DEFINE vfpYes 6
#DEFINE vfpQuestion 32
If MessageBox(“¿Desea terminar la Práctica?”, ;
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)
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 40
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
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 41
Microsoft Visual FoxProGUÍA DE LABORATORIO Nº 4
Objetivos
Luego de completar este laboratorio, el estudiante será
capaz de:
Crear métodos definidos por el usuario.
Pasar correctamente los argumentos a un método.
Ejecutar métodos desde un formulario.
Implementar métodos que devuelvan múltiples valores.
Consideraciones
Para el desarrollo del presente laboratorio Ud. deberá
crear una carpeta C:\Unidad3_nl, para guardar sus trabajos
correspondientes a este laboratorio.
Práctica Nº 11
Este primer ejercicio consiste en escribir un método 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.
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 42
Para el desarrollo de esta Práctica, 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 según 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:
Text1
Nombre TxtCadena
Enabled .T.-Verdadero
Text2
Nombre TxtInvertida
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 43
Enabled .F.-Falso
Command1
Nombre CmdAceptar
Caption \<Aceptar
Default .T.-Verdadero
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 método, denominado CadInvertida. Para
ello vaya al Menú Formulario y elija la opción Crear nuevo
método. Se debe presentar una ventana similar a la figura
siguiente:
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 44
Ingrese los datos que se muestran y a continuación dar click en el botón Agregar. Luego, dar doble
click sobre el formulario y transcriba el siguiente código:
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
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 45
Práctica Nº 12
Escriba un método que reciba como parámetro la fecha de
nacimiento del usuario. Debe retornar el signo zodiacal, el día
de nacimiento y la cantidad de días vividos hasta la fecha
actual. Utilice un formulario de prueba para verificar la
funcionalidad del método creado.
Sugerencia
Retorne un único valor como una cadena de caracteres, en
la cual estén incluidos los valores que se piden. A manera de
ejemplo considere lo siguiente:
cRpta = cZodiaco + cDiaNacimiento + cDiasVividos + cFechaHoy
Return cRpta
Aportación de: Carlos Castillo Peralta
Abel Olivas Martínez
Pág. 46