Está en la página 1de 50

Microsoft Visual FoxPro

GUÍA 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 programación clásica.
 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.

Aplicación Nº 1
En este primer ejercicio vamos a escribir un programa
que lea tres números enteros y determine el número mayor, el
número central y el número menor. Debemos asumir que los tres
números son siempre distintos.

Para el desarrollo de la presente aplicación ingresar a


Microsoft Visual FoxPro. En la Ventana de Comandos digite la
siguiente orden:
Modify Command Aplica01

A continuación se debe presentar el Editor de programas.


En dicha ventana proceda a ingresar el código 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 botón Ejecutar
( ! ) de la Barra de herramientas Estándar.

Para volver a ejecutar su programa digitar la siguiente


orden desde la Ventana de Comandos:

Do Aplica01

Aplicación Nº 2
Un restaurante ofrece un descuento del 10% para consumos
entre C$300.00 y C$500.00; un descuento del 20% para
consumos mayores a C$800.00; para todos los demás casos no se
aplica ningún 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 aplicación abrir una


nueva ventana de edición e ingresar el siguiente código:

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)
Aplicación Nº 3
El ejercicio consiste en escribir un programa que lea “
n ” enteros y calcule la suma total, la media aritmética, el

máximo y el mínimo de los datos.

Para el desarrollo de la presente aplicación, de manera


análoga que para los casos anteriores abrir una nueva ventana
de edición e ingresar el siguiente código:

Close All
Clear
Input “Ingrese cantidad de números?” To nN
Declare aVector(nN)
For nI = 1 To nN
Input “Número [” + 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)
? “Máximo=” + Str(nMax)
? “Mínimo=” + Str(nMin)
Aplicación Nº 4
A continuación vamos a escribir una función 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 aplicación proceda de manera


similar a los casos anteriores e ingresar el código 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
GUÍA DE LABORATORIO Nº 2

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:\Lab2, para guardar sus trabajos
correspondientes a este laboratorio.

Aplicación Nº 1
El ejercicio consiste en elaborar una aplicación 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.
Para el desarrollo de esta aplicación, 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

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
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
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 aplicación 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.

Aplicación Nº 2
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 aplicación, 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
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

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
Aplicación Nº 3
Este ejercicio consiste en elaborar un formulario que
simule el funcionamiento de un reloj despertador digital. La
aplicación debe permitir al usuario ingresar la hora a la que
desea ser avisado. El diseño de la interfaz debe ser similar
a la figura siguiente:

Para el desarrollo de esta aplicación proceder a ubicar


los siguientes controles en el formulario:

2 etiquetas
2 cajas de texto
1 cronómetro
2 botones de comandos

En seguida establezca las propiedades según se indica a


continuación:

Form1
Name FrmReloj
Caption Reloj despertador digital
MaxButton .F.-Falso
MinButton .F.-Falso
Label1
Name LblHora
Caption Hora

Label2
Name LblDespertador
Caption Despertador

Text1
Name TxtHora
FontBold .T.-Verdadero
FontSize 24

Text2
Name TxtDespertador
FontBold .T.-Verdadero
FontSize 24

Timer1
Name Timer1
Enabled .T.-Verdadero
Interval 500

Command1
Name CmdOnOff
Caption \<Desactivar
Default .T.-Verdadero

Command2
Name CmdTerminar
Cancel .T.-Verdadero
Caption \<Terminar

Una vez establecidas las propiedades, proceda a ingresar


el código que se muestra:

Objeto: FrmReloj Procedimiento: Load

Public lOnOff
Objeto: FrmReloj Procedimiento: Init

lOnOff = .F.
Thisform.TxtDespertador.Value = “00:00:00”
Thisform.Refresh

Objeto: Timer1 Procedimiento: Timer

If Thisform.TxtHora.Value != Time() Then


Thisform.TxtHora.Value = Time()
EndIf

If (Thisform.TxtDespertador.Value < Time()) And lOnOff Then


* Sonido acústico
?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 Procedimiento: Click

Release Thisform
Microsoft Visual FoxPro
GUÍA DE LABORATORIO Nº 3

Objetivos
Luego de completar este laboratorio, el estudiante será
capaz de:

 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:Lab3, para guardar sus trabajos
correspondientes a este laboratorio.

Aplicación Nº 1
El ejercicio consiste en crear una aplicación que
permita leer una fracción y de como resultado la fracción
simplificada. Esto es, que halle la fracción irreductible
equivalente.

Para el desarrollo de esta aplicación 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
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
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

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

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

Aplicación Nº 2
Este ejercicio consiste en elaborar una aplicación 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 aplicación, tal como se
observa en la figura siguiente:
En caso de que el usuario elija la opción Si, la
aplicación debe terminar. Caso contrario, es decir si el
usuario elige la opción No, se debe proseguir con la
aplicación.

Para el desarrollo de esta aplicación, 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
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

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 aplicación?”, ;
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

Aplicación Nº 3
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.

Para el desarrollo de esta aplicación, 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
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

Microsoft Visual FoxPro


GUÍA DE LABORATORIO Nº 4

Objetivos
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:\Lab4, para guardar sus trabajos
correspondientes a este laboratorio.

Aplicación Nº 1
Este ejercicio consiste en elaborar una aplicación 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 aplicación, proceda a ubicar


los siguientes controles en el formulario:

5 etiquetas
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
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

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”)
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 aplicación?”, ;
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
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

Aplicación Nº 2
Este ejercicio consiste en desarrollar una aplicación
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 aplicación 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 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
Name LstSeleccionar

List2
Name LstProgramado

Command1
Name CmdAgregar
Caption
Picture C:\FundVFP\Bitmaps\AddItem.Bmp

Command2
Name CmdAgregarTodo
Caption
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 \<Añadir

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.
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 4
#DEFINE vfpYes 6
#DEFINE vfpQuestion 32
If MessageBox(“¿Desea terminar la aplicación?”, ;
vfpQuestion + vfpYesNo, “Pregunta”) = vfpYes Then
Release Thisform
Else
NoDefault
EndIf

Aplicación Nº 3
El ejercicio consiste en elaborar una aplicación 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.

Para el desarrollo de esta aplicación, 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:

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
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 aplicación?”, ;
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
GUÍA DE LABORATORIO Nº 5

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:\Lab5, para guardar sus trabajos
correspondientes a este laboratorio.

Aplicación Nº 1
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.
Para el desarrollo de esta aplicación, 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
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:
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

Aplicación Nº 2
Este ejercicio consiste en crear un método 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 aplicación proceda a crear un
nuevo método denominado NomApe. Luego transcriba el siguiente
código:

Objeto: FrmPrueba_NomApe 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)
cNomApe = cNom + “ ” + cApe
Return cNomApe

Aplicación Nº 3
Para calcular el porcentaje de humedad de una muestra

sólida primero se pesa la muestra ( m1 ), luego se le lleva a


la estufa de 120 a 150 ºC por un tiempo de 2 horas
aproximadamente. A continuación se deja enfriar la muestra y

se pesa nuevamente ( m2 ). Finalmente se realiza el siguiente


cálculo:

m1 −m 2
% Humedad=100
( m1 )
Nuestro trabajo consiste en crear un método que permita
realizar el cálculo anterior.

Para el desarrollo de esta aplicación proceder a cera un


nuevo método denominado Humedad. Luego ingrese el siguiente
código:

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

También podría gustarte