MICROSOFT VISUAL FOXPRO

NIVEL I

INTRODUCCIÓN A LA PROGRAMACIÓN
INTRODUCCIÓN
La presente Guía de Laboratorio, se elaboró con la finalidad de complementar la parte teórica con la parte práctica del curso. Contiene una gran variedad de ejemplos prácticos . Desde ya les deseo la mejor de las suertes en el aprendizaje de Microsoft Visual FoxPro. Lima, Setiembre del 2002

Microsoft
GUÍA DE LABORATORIO Nº 1 Objetivos

Visual FoxPro

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

Identificar los elementos del entorno integrado de desarrollo de Microsoft Visual FoxPro 6.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:\FundVFP\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 S/. 30.00 y S/. 50.00; un descuento del 20% para consumos mayores a S/. 50.00 nuevos soles; para todos los demás casos no se aplica ningún 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 aplicación abrir una nueva ventana de edición e ingresar el siguiente código: 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) Aplicación Nº 3 El ejercicio consiste en escribir un programa que lea " " 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)

Por ello. esta aplicación se deja como ejercicio para el estudiante. Microsoft GUÍA DE LABORATORIO Nº 2 Visual FoxPro . nI. ya entendió como funciona esto.Function CadInv Parameters cCadena nN = Len(Alltrim(cCadena)) Declare cTemporal(nN) For nI = 1 To nN cTemporal(nI) = SubStr(cCadena. 1) Next cInvertida = "" For nJ = nN To 1 Step -1 cInvertida = cInvertida + cTemporal(nJ) Next J Return cInvertida Aplicación 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 1 8 15 22 29 L 2 9 16 23 30 M 3 10 17 24 M 4 11 18 25 J 5 12 19 26 V 6 13 20 27 S 7 14 21 28 Creo que a estas alturas Ud.

ddd" e imprima el mayor valor entre la parte entera y la parte decimal. Añadir controles a un formulario. en primer lugar debe crear un nuevo formulario. deberá crear una carpeta C:\FundVFP\Lab2. Para el desarrollo de esta aplicación. 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. Establecer las propiedades de los controles. Trabajar con procedimientos de eventos. Para ello digite lo siguiente en la Ventana de Comandos: Create Form A continuación seleccione del Menú Ver. Consideraciones Para el desarrollo del presente laboratorio Ud. Manejar las diferentes propiedades y eventos del formulario. la opción Barra de herramientas Controles de Formularios.Objetivos Luego de completar este laboratorio. Se presentará una ventana similar a la siguiente figura: En seguida de la barra de herramientas mostrada ubicar los siguientes controles al formulario: . el estudiante será capaz de:      Implementar soluciones mediante programación orientada a objetos.

F. A continuación proceda a establecer las propiedades de los objetos según se indica.F. simplemente dar click en el control deseado y luego dar click en el formulario en la posición que se le desea ubicar.999 0 LblMay Mayor: LblX Ingrese un real de la forma eee. para ello dar click derecho sobre el control y del menú emergente que se presenta elegir la opción Propiedades.-Falso .ddd? FrmAplica01 Mayor valor de un número real . Form1 Name Caption MaxButton MinButton Label1 Name Caption Label2 Name Caption Text1 Name InputMask Value Text2 Name InputMask TxtMay 999 TxtX 999.-Falso .2 etiquetas 2 cajas de texto 3 botones de comando Para ubicar un control en el formulario. Adicionalmente puede utilizar la barra de herramientas Diseño para obtener una mejor presentación.

Value nA = Int(Thisform.-Verdadero CmdLimpiar ###BOT_TEXT###lt;Limpiar CmdSalir .Value) nX = nX .TxtX.TxtX.Value = nMay Procedimiento: Click .TxtMay.-Verdadero ###BOT_TEXT###lt;Salir A continuación dar doble click sobre el control CmdAceptar y proceda a ingresar el código que se muestra: Objeto: CmdAceptar nX = Thisform.T.T.Value Command1 Name Caption Default Command2 Name Caption Command3 Name Cancel Caption 0 CmdAceptar ###BOT_TEXT###lt;Aceptar .nA nB = 1000 * nX If nA > nB Then nMay = nA Else nMay = nB EndIf Thisform.

Pruebe ingresando diferentes valores. luego proceda a ejecutarla.Refresh De manera análoga ingresar el siguiente código para el control CmdLimpiar: Objeto: CmdLimpiar Thisform.Setfocus Thisform.Value = 0 Thisform. Procedimiento: Click Procedimiento: Click Para el desarrollo de esta aplicación. En caso que falle revise y corrija. Para ello ingrese lo siguiente en la Ventana de Comandos: Do Form FrmAplica01 Debe funcionar sin problemas. proceda a ubicar los siguientes controles en el formulario: 2 etiquetas .Value = 0 Thisform.Thisform.TxtX. 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.TxtMay.TxtX.Refresh Finalmente proceder a ingresar el siguiente código para el control CmdSalir: Objeto: CmdSalir Release Thisform A continuación guarde su aplicación como FrmAplica01.

F. proceda a establecer las propiedades según se indica a continuación: Form1 Name Caption MaxButton MinButton Label1 Name Caption Label2 Name Caption Text1 Name Enabled Text2 Name Enabled Command1 Name Caption Command2 CmdAceptar ###BOT_TEXT###lt;Aceptar TxtEdad .F.-Falso TxtFecNac .F.2 cajas de texto 3 botones de comando Luego.-Verdadero LblEdad Su edad es: LblFecNac Fecha de nacimiento: .T.-Falso FrmEdad .-Falso .

TxtFecNac.Setfocus Thisform. proceda a ingresar el siguiente código: Objeto: FrmEdad Set Date French Set Century On Objeto: FrmEdad cNomDia = Cdow(Date()) cDia = Str(Day(Date()).Caption = cFecha Thisform. 2) cMes = Cmonth(Date()) cAnno = Str(Year(Date()).Refresh Objeto: CmdAceptar dFecNac = Ctod(Thisform.TxtEdad.Value = Str(nEdad) + " años" Thisform.Name Caption Command3 Name Caption CmdLimpiar ###BOT_TEXT###lt;Limpiar CmdSalir ###BOT_TEXT###lt;Salir Luego de establecidas las propiedades de los controles.Refresh Procedimiento: Click Procedimiento: Init Procedimiento: Load . 4) cFecha = cNomDia + " " + cDia + " de " + cMes + " del " + cAnno Thisform.TxtFecNac.dFecNac) / 365) Thisform.Value) nEdad = Int ((Date() .

Setfocus Thisform.Refresh Objeto: CmdSalir Release Thisform Aplicación Nº 3 Procedimiento: Click Procedimiento: Click Este ejercicio consiste en elaborar un formulario que simule el funcionamiento de un reloj despertador digital.Value = "" Thisform.TxtEdad. 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 .Value = "" Thisform.TxtFecNac.Objeto: CmdLimpiar Thisform.TxtFecNac. La aplicación debe permitir al usuario ingresar la hora a la que desea ser avisado.

-Falso LblHora Hora LblDespertador Despertador TxtHora .Name Caption MaxButton MinButton Label1 Name Caption Label2 Name Caption Text1 Name FontBold FontSize Text2 Name FontBold FontSize Timer1 Name Enabled Interval Command1 Name Caption FrmReloj Reloj despertador digital .F.-Falso .F.T.T.-Verdadero 24 Timer1 .-Verdadero 500 CmdOnOff ###BOT_TEXT###lt;Desactivar .-Verdadero 24 TxtDespertador .T.

Value = Time() EndIf If (Thisform.F.TxtHora.T.Value != Time() Then Thisform.Refresh Objeto: CmdOnOff If lOnOff Then Procedimiento: Click Procedimiento: Timer Procedimiento: Init Procedimiento: Load .Value = "00:00:00" Thisform.Refresh Objeto: Timer1 If Thisform. Thisform.TxtDespertador.T.-Verdadero CmdTerminar .Default Command2 Name Cancel Caption .TxtDespertador.TxtHora. proceda a ingresar el código que se muestra: Objeto: FrmReloj Public lOnOff Objeto: FrmReloj lOnOff = .Value < Time()) And lOnOff Then * Sonido acústico ?Chr(7) EndIf Thisform.-Verdadero ###BOT_TEXT###lt;Terminar Una vez establecidas las propiedades.

200.CmdOnOff. Thisform. Elaborar una aplicación que permita la lectura de la cantidad a retirar la cual debe ser múltiplo de 10 (caso contrario debe solicitar al usuario que ingrese un valor correcto.Refresh Objeto: CmdTerminar Release Thisform Aplicación Nº 4 Se tiene un cajero automático el cual permite manipular cierta cantidad de dinero para lo cual dispone de los siguientes billetes: S/. 100. 10.Caption = "###BOT_TEXT###lt;Activar" Else lOnOff = .00.lOnOff = . 20. Thisform. S/.F. 50.00. La aplicación debe indicar el menor número de billetes a utilizar.Caption = "###BOT_TEXT###lt;Desactivar" EndIf Thisform. El diseño de la interfaz debe ser similar a la siguiente figura: Procedimiento: Click Microsoft GUÍA DE LABORATORIO Nº 3 Objetivos Visual FoxPro .CmdOnOff.00 y S/. S/. no debe aceptar la lectura de valores que no cumplan esta condición). S/.00.T.00.

para guardar sus trabajos correspondientes a este laboratorio. el estudiante será capaz de:     Manejar las diferentes propiedades y métodos del conjunto de formularios. 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. Identificar y utilizar los controles estándar adicionales.Luego de completar este laboratorio. Nuevamente vaya al Menú Formulario y elija la opción Agregar nuevo formulario. Utilizar cajas de diálogo predefinidas para visualizar mensajes. Esto es. Consideraciones Para el desarrollo del presente laboratorio Ud. El Diseñador de formularios debe presentar una apariencia similar a la figura mostrada: . 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. deberá crear una carpeta C:\FundVFP\Lab3. pues no se apreciará nada en especial). que halle la fracción irreductible equivalente.

-Falso .-Falso .F.F.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 Caption MaxButton MinButton Label1 Name Caption Label2 LblNumerador Numerador? FrmIngreso Ingreso de datos .

Name Caption Text1 Name Value Text2 Name Value Command1 Name Caption Default Command2 Name Cancel Caption LblDenominador Denominador? TxtNumerador 0 TxtDenominador 0 CmdSimplificar Simplificar .T.FrmIngreso.T.-Verdadero CmdSalir .TxtDenominador.Value nDenominador = Thisformset.Value If nNumerador < nDenominador Then nC = nNumerador Else nC = nDenominador .FrmIngreso.TxtNumerador.-Verdadero Salir A continuación proceda a ingresar el código que se muestra: Objeto: CmdSimplificar Procedimiento: Click nNumerador = Thisformset.

1 EndDo nNumerador = nNumerador / nC nDenominador = nDenominador / nC Thisformset.F.FrmIngreso.Refresh Objeto: CmdSalir 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 Caption MaxButton MinButton Label1 Name Caption Text1 LblFraccion Fracción simplificada: FrmSalida Salida .Show Thisformset.-Falso Procedimiento: Click .F.-Falso .Hide Thisformset.FrmSalida.EndIf Do While (nNumerador % nC != 0) Or (nDenominador % nC != 0) nC = nC .

FrmSalida.Hide Thisformset.TxtFraccion.Refresh Finalmente proceda a ingresar el código que se indica a continuación: Objeto: Formset1 Public nNumerador Public nDenominador Public nC Objeto: Formset1 Thisformset.Hide Procedimiento: Init Procedimiento: Load Procedimiento: Click Procedimiento: Activate .Refresh Objeto: CmdVolver Thisformset.Name Alignment Command1 Name Caption TxtFraccion 2-Centro CmdVolver Volver A continuación proceda a ingresar el código que se muestra: Objeto: FrmSalida cNumerador = Str(nNumerador) cDenominador = Str(nDenominador) cFraccion = cNumerador + " / " + cDenominador Thisformset.FrmSalida.FrmIngreso.FrmSalida.Value = cFraccion Thisformset.Show Thisformset.

es decir si el usuario elige la opción No. la aplicación debe terminar. Para el desarrollo de esta aplicación. mm. Caso contrario. se debe confirmar si desea terminar la aplicación.Refresh Aplicación Nº 2 Este ejercicio consiste en elaborar una aplicación que acepte fechas como tres números (dd. 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: . aaaa) y las visualice del modo usual. tal como se observa en la figura siguiente: En caso de que el usuario elija la opción Si. 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 proseguir con la aplicación.Thisformset.

T.Form1 Name Caption MaxButton MinButton Label1 Name AutoSize Caption Label2 Name AutoSize Caption Label3 Name AutoSize Caption Label4 Name AutoSize Caption Spinner1 Name SpinnerHighValue SpinnerLowValue Spinner2 SpnDia 31 1 LblEnLetras .-Verdadero Mes: LblDia .F.T.T.F.-Falso .-Verdadero Año: LblMes .-Falso .T.-Verdadero Día: FrmFecha Fecha en letras .-Verdadero En letras: LblAnno .

-Verdadero CmdLimpiar ###BOT_TEXT###lt;Limpiar CmdSalir .Name SpinnerHighValue SpinnerLowValue Spinner3 Name SpinnerHighValue SpinnerLowValue Text1 Name Alignment Command1 Name Caption Default Command2 Name Caption Command3 Name Cancel Caption SpnMes 12 1 SpnAnno 9999 0 TxtEnLetras 2-Centro CmdAceptar ###BOT_TEXT###lt;Aceptar .T.-Verdadero ###BOT_TEXT###lt;Salir Una vez establecidas las propiedades proceda a ingresar el código que se indica a continuación: Objeto: FrmFecha Set Date French Procedimiento: Load .T.

Text dFecha = Ctod(cFecha) cNomDia = Cdow(dFecha) cDia = Str(Day(dFecha).Text .Set Century On Objeto: FrmFecha #DEFINE vfpYesNo 4 #DEFINE vfpYes 6 #DEFINE vfpQuestion 32 If MessageBox("¿Desea terminar la aplicación?".Text + cBarra + Thisform. 2) cMes = Cmonth(dFecha) cAnno = Str(Year(dFecha).Value = cFecha Thisform.Refresh Objeto: CmdLimpiar Procedimiento: Click Procedimiento: Click Procedimiento: QueryUnload .TxtEnLetras. 4) cFecha = cNomDia + " " + cDia + " de " + cMes + " de " + cAnno Thisform. .SpnDia. "Pregunta") = vfpYes Then Release Thisform Else NoDefault EndIf Objeto: CmdAceptar cBarra = "/" cFecha = Thisform. + cBarra + Thisform.SpnAnno. vfpQuestion + vfpYesNo.SpnMes.

Procedimiento: Click Para el desarrollo de esta aplicación.SpnMes.TxtEnLetras.SpnDia.Value = 0 Thisform.SpnAnno.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.SpnDia.Value = 0 Thisform. 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.Thisform.Setfocus Thisform.Value = "" Thisform. 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 .Refresh Objeto: CmdSalir Thisform.Value = 0 Thisform. pero permite escribir texto en líneas diferentes.

TxtNumero. proceda a ingresar el código que se indica a continuación: Objeto: TxtNumero nN = Val(Thisform.-Verdadero EdtTabla 2-Vertical TxtNumero 2-Centro LblNumero Ingrese un número: FrmTabla Tabla de multiplicar .T.Value) cS = "" For nI = 0 To 12 nP = nN * nI Procedimiento: InteractiveChange .En seguida proceda a establecer las propiedades según se indica: Form1 Name Caption MaxButton MinButton Label1 Name Caption Text1 Name Alignment Edit1 Name ScrollBars Command1 Name Caption Default CmdLimpiar ###BOT_TEXT###lt;Limpiar .-Falso .-Falso Una vez diseñada la interfaz.F.F.

La aplicación 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.Refresh Aplicación Nº 4 Elaborar una aplicación que acepte como entrada la reserva de agua de un depósito y los litros que se consumen a la semana.Value = "" Thisform.EdtTabla.Value = "" Thisform. Utilizar otro formulario para mostrar la salida.Value = cS Thisform.cS = cS + Str(nN) + " * " + Str(nI) + " = " + Str(nP) . El diseño de la interfaz debe ser similar a la figura mostrada: Procedimiento: Click .EdtTabla.Refresh Objeto: CmdLimpiar Thisform. + Chr(13) Next Thisform.TxtNumero.

Microsoft GUÍA DE LABORATORIO Nº 4 Objetivos Visual FoxPro Luego de completar este laboratorio. deberá crear una carpeta C:\FundVFP\Lab4. Aplicación Nº 1 Este ejercicio consiste en elaborar una aplicación que permita cambiar el aspecto de una caja de texto. el color y el tamaño. Consideraciones Para el desarrollo del presente laboratorio Ud. 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. para guardar sus trabajos correspondientes a este laboratorio. El diseño de la interfaz debe ser similar a: . El usuario debe elegir el tipo de fuente a utilizar. el estilo.

-Verdadero Editor . 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 AutoCenter Caption MaxButton MinButton Label1 Name Caption Label2 LblTexto Texto FrmEditor .F.-Falso .T.F.Para el desarrollo de esta aplicación.-Falso .

-Verdadero .T.Name Caption Label3 Name Caption Label4 Name Caption Label5 Name Caption Combo1 Name List1 Name Text1 Name ForeColor Check1 Name Caption FontBold Check2 LblFuente Fuente LblTamaño Tamaño LblEstilo Estilo LblColor Color CboFuente LstTamaño TxtTexto 255. 0. 0 ChkNegrita Negrita .

0 OptAzul 0. proceda a ingresar el código que se muestra a continuación: Objeto: FrmEditor Procedimiento: Init .T. 255.T.-Verdadero ChkSubrayado Subrayado .-Verdadero 3 OptRojo 255.Name Caption FontItalic Check3 Name Caption FontUnderline OptionGroup1 ButtonCount Option1 Name ForeColor Option2 Name ForeColor Option3 Name ForeColor Command1 Name Caption Default ChkCursiva Cursiva . 0. 0.T.-Verdadero Una vez establecidas las propiedades de la interfaz. 0 OptVerde 0. 255 CmdSalir ###BOT_TEXT###lt;Salir .

vfpQuestion + vfpYesNo.AddItem("Impact") Thisform.AddItem("Technical") Thisform.CboFuente.Refresh .AddItem("MS Sans Serif") Thisform.AddItem("Arial") Thisform.CboFuente.CboFuente. .CboFuente.AddItem("Courier New") Thisform.AddItem("Times New Roman") For nI = 8 To 20 Step 2 Thisform.CboFuente.CboFuente.AddItem("Arial Black") Thisform.AddItem("Garamond") Thisform.CboFuente.Value Thisform.CboFuente.AddItem(Alltrim(Str(nI))) Next Objeto: FrmEditor #DEFINE vfpYesNo 4 #DEFINE vfpYes 6 #DEFINE vfpQuestion 32 If MessageBox("¿Desea terminar la aplicación?". "Pregunta") = vfpYes Then Release Thisform Else NoDefault EndIf Objeto: CboFuente Procedimiento: Click Procedimiento: QueryUnload Thisform.Thisform.TxtTexto.CboFuente.FontName = Thisform.LstTamaño.

TxtTexto.FontUnderline = .Refresh Objeto: ChkCursiva If Thisform.FontItalic = .Value = 1 Then Thisform.FontItalic = .Value = 1 Then Thisform. Else Thisform.TxtTexto.TxtTexto. Else Thisform.TxtTexto.Value = 1 Then Thisform.TxtTexto.F. EndIf Procedimiento: Click Procedimiento: Click Procedimiento: Click Procedimiento: Click .TxtTexto.F.Value) Thisform.Objeto: LstTamaño nTamaño = Val(Thisform.FontSize = nTamaño Thisform.LstTamaño.ChkCursiva.T.ChkNegrita.Refresh Objeto: ChkNegrita If Thisform.TxtTexto.FontUnderline = .T.Refresh Objeto: ChkSubrayado If Thisform.FontBold = .F.T. EndIf Thisform.ChkSubrayado. Else Thisform.FontBold = . EndIf Thisform.

Refresh Objeto: OptVerde Procedimiento: Click Thisform.QueryUnload Aplicación Nº 2 Este ejercicio consiste en desarrollar una aplicación que permita ingresar el nombre de un curso.Thisform.Refresh Objeto: CmdSalir Thisform. 255.Refresh Objeto: OptRojo Procedimiento: Click Thisform. Los cursos deben ser seleccionados de la lista de espera y trasladados a la lista de cursos programados y viceversa. 0. 0. el cual pasa a formar parte de una lista de espera antes de ser programado para su dictado.ForeColor = RGB(255. 255) Thisform.ForeColor = RGB(0. 0) Thisform. El diseño de la interfaz debe ser similar a la figura mostrada: Procedimiento: Click .Refresh Objeto: OptAzul Procedimiento: Click Thisform. 0) Thisform.TxtTexto.TxtTexto.TxtTexto.ForeColor = RGB(0.

-Falso .-Falso .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 Caption MaxButton MinButton Label1 Name Caption Label2 LblCurso Ingrese nuevo curso: FrmCursos Cursos .F.F.

Bmp CmdQuitar C:\FundVFP\Bitmaps\Remove.Bmp CmdAgregarTodo C:\FundVFP\Bitmaps\AddAll.Name Caption Label3 Name Caption Text1 Name List1 Name List2 Name Command1 Name Caption Picture Command2 Name Caption Picture Command3 Name Caption Picture Command4 LblSeleccionar Seleccione un curso: LblProgramado Curso programado: TxtCurso LstSeleccionar LstProgramado CmdAgregar C:\FundVFP\Bitmaps\AddItem.Bmp .

EndIf Thisform.ListIndex != 0 Then Thisform.Value) Thisform.Name Caption Picture Command5 Name Caption CmdQuitarTodo C:\FundVFP\Bitmaps\RemoveAll.LstSeleccionar.Enabled = .Bmp CmdAnnadir ###BOT_TEXT###lt;Añadir En seguida proceda a ingresar el código que se indica: Objeto: CmdAnnadir Procedimiento: Click Thisform.Enabled = .TxtCurso.CmdAgregar.Refresh Objeto: LstProgramado Procedimiento: Click Procedimiento: Click If Thisform.LstSeleccionar. EndIf Thisform.CmdQuitarTodo.SetFocus Objeto: LstSeleccionar If Thisform.Enabled = .T.CmdAgregarTodo.TxtCurso.Additem(Thisform.Value = "" Thisform. Thisform.Refresh Objeto: CmdAgregar Procedimiento: Click .T.LstProgramado.Enabled = . Thisform.T.T.TxtCurso.ListIndex != 0 Then Thisform.CmdQuitar.

ListIndex = 0 Thisform.RemoveItem(nCurso) Thisform.F. EndIf Thisform.AddItem. EndIf Thisform.Enabled = .Enabled = .ListIndex If Thisform.LstProgramado.LstSeleccionar.LstSeleccionar.ListIndex = 0 Thisform.CmdAgregar.cCurso = Thisform.CmdQuitarTodo.LstProgramado.LstSeleccionar.Enabled = .LstProgramado.LstSeleccionar.CmdQuitar.Enabled = .Refresh Objeto: CmdAgregarTodo Procedimiento: Click Procedimiento: Click For nI = 1 To Thisform.ListCount Thisform.AddItem(cCurso) Thisform.AddItem(cCurso) Thisform. Thisform.ListIndex If Thisform.LstSeleccionar.ListCount > 0 Then Thisform.LstSeleccionar.LstSeleccionar.RemoveItem(nCurso) Thisform.LstProgramado.F.Refresh Objeto: CmdQuitar cCurso = Thisform.Value nCurso = Thisform.LstProgramado.ListCount > 0 Then Thisform.LstProgramado.CmdAgregarTodo.LstProgramado. Thisform.F. .Value nCurso = Thisform.F.

Enabled = .Refresh Objeto: FrmCursos #DEFINE vfpYesNo 4 #DEFINE vfpYes 6 #DEFINE vfpQuestion 32 If MessageBox("¿Desea terminar la aplicación?".Refresh Objeto: CmdQuitarTodo Procedimiento: Click For nI = 1 To Thisform.Enabled = . vfpQuestion + vfpYesNo. Thisform.LstProgramado.ListCount Thisform.AddItem.Enabled = .CmdAgregarTodo.F.List(nI)) Next Thisform. Thisform.CmdQuitar.CmdQuitarTodo.(Thisform.LstSeleccionar.CmdAgregar. .LstProgramado.LstSeleccionar.F.F.List(nI)) Next Thisform.LstProgramado.Enabled = . Thisform.LstSeleccionar. (Thisform. Thisform.F.Clear Thisform.Clear Thisform. "Pregunta") = vfpYes Then Release Thisform Else NoDefault Procedimiento: QueryUnload .

-Falso . Utilice el método de la burbuja para realizar la ordenación. y a continuación los visualice ordenados en forma ascendente o descendente.EndIf Aplicación Nº 3 El ejercicio consiste en elaborar una aplicación que permita leer números de tipo entero.F.F. 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 Caption MaxButton MinButton Label1 Name Caption LblNumero Ingrese un nuevo número: FrmBurbuja Ordenación por burbuja .-Falso . Para el desarrollo de esta aplicación.

Label2 Name Caption Label3 Name Caption Text1 Name Value List1 Name Option1 Nombre Caption Option2 Nombre Caption Command1 Nombre Caption Default Command2 Nombre Caption CmdOrdenar ###BOT_TEXT###lt;Ordenar CmdAnnadir ###BOT_TEXT###lt;Añadir True OptDescendente Descendente OptAscendente Ascendente LstNumero TxtNumero 0 LblLista Lista de números: LblOrden Orden: .

Command3 Nombre Cancel Caption Picture CmdSalir .AddItem(Thisform.Value = "" Thisform.ico Una vez establecidas las propiedades proceda a ingresar el código que se indica a continuación: Objeto: FrmBurbuja #DEFINE vfpYesNo 4 #DEFINE vfpYes 6 #DEFINE vfpQuestion 32 If MessageBox("¿Desea terminar la aplicación?".Value) Thisform.-Verdadero ###BOT_TEXT###lt;Salir C:\Archivos de programa\Microsoft Visual Studio\Common\Graphics\Icons\Arrows\ Point04. "Pregunta") = vfpYes Then Release Thisform Else NoDefault EndIf Objeto: CmdAnnadir Procedimiento: Click Procedimiento: QueryUnload Thisform.ListCount Procedimiento: Click .T.TxtNumero.LstNumero. vfpQuestion + vfpYesNo. .SetFocus Objeto: CmdOrdenar nN = Thisform.LstNumero.TxtNumero.TxtNumero.

Dimension nA(nN) As Integer For nI = 1 To nN nA(nI) = Thisform.LstNumero.OptionGroup1.OptAscendente.List(nI) Next If Thisform.Value = 1 Then For nI = 1 To nN .Value = 1 Then For nI = 1 To nN .OptionGroup1.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 .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.OptDescendente.

EndIf Thisform. El usuario debe seleccionar un curso y en seguida se debe presentar el nombre del profesor encargado del curso (teoría). así como los horarios de teoría y de laboratorio.Clear For nI = 1 To nN Thisform. los cuales se mostraran en una lista. el nombre del jefe de práctica (laboratorio).List(nI) = nA(nI) Next Objeto: CmdSalir Thisform.LstNumero.LstNumero.QueryUnload Aplicación Nº 4 Desarrollar una aplicación que permita realizar consultas acerca de un determinado curso. El diseño de la interfaz debe ser similar a la figura que se muestra: Procedimiento: Click Microsoft GUÍA DE LABORATORIO Nº 5 Visual FoxPro . respectivamente.

F. Consideraciones Para el desarrollo del presente laboratorio Ud.Objetivos Luego de completar 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. el estudiante será capaz de:     Crear métodos definidos por el usuario. para guardar sus trabajos correspondientes a este laboratorio. Implementar métodos que devuelvan múltiples valores. Pasar correctamente los argumentos a un método. 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 Caption MaxButton FrmPrueba_Cadena Cadena invertida . deberá crear una carpeta C:\FundVFP\Lab5. Para el desarrollo de esta aplicación.-Falso . Por ejemplo si se ingresa la cadena CORAZON deberá retornar NOZAROC. Ejecutar métodos desde un formulario.

-Verdadero CmdLimpiar ###BOT_TEXT###lt;Limpiar CmdSalir .-Verdadero ###BOT_TEXT###lt;Salir .-Falso CmdAceptar ###BOT_TEXT###lt;Aceptar .T.F.T.-Verdadero TxtInvertida .T.-Falso LblCadena Ingrese una cadena: LblInvertida Cadena invertida: TxtCadena .F.MinButton Label1 Nombre Caption Label2 Nombre Caption Text1 Nombre Enabled Text2 Nombre Enabled Command1 Nombre Caption Default Command2 Nombre Caption Command3 Nombre Cancel Caption .

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. dar doble click sobre el formulario y transcriba el siguiente código: Objeto: FrmPrueba_Cadena Parameters cCadena nN = Len(Alltrim(cCadena)) Dimension cTemporal(nN) For nI = 1 To nN cTemporal(nI) = SubStr(cCadena.TxtInvertida.Una vez establecidas las propiedades de la interfaz. 1) Next cCadena = "" For nJ = nN To 1 Step -1 cInvertida = cInvertida + cTemporal(nJ) Next Return cInvertida Objeto: CmdAceptar cCadena = Thisform. nI.TxtCadena. Luego. proceda a crear un nuevo método.Value Thisform.Value = Thisform.CadInvertida(cCadena) Procedimiento: Click Procedimiento: CadInvertida .

Para el desarrollo de esta aplicación proceda a crear un nuevo método denominado NomApe. 1. nN .nI) cNomApe = cNom + " " + cApe Procedimiento: NomApe . nI. nI + 1. 1) = "." Then Exit EndIf Next cApe = SubStr(cApeNom. nI-1) cNom = SubStr(cApeNom.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.Thisform. Luego transcriba el siguiente código: Objeto: FrmPrueba_NomApe Parameters cApeNom nN = Len(Alltrim(cApeNom)) Dimension cNom(nN) Dimension cApe(nN) For nI = 1 To nN If SubStr(cApeNom.

Value = Str(nHumedad. Finalmente se realiza el siguiente cálculo: Nuestro trabajo consiste en crear un método que permita realizar el cálculo anterior.TxtMasa2. luego se le lleva a la estufa de 120 a 150 ºC por un tiempo de 2 horas aproximadamente. nMasa2) Thisform.nM2) / nM1 Return nH Objeto: CmdAceptar nMasa1 = Val(Thisform.Humedad(nMasa1.Return cNomApe Aplicación Nº 3 Para calcular el porcentaje de humedad de una muestra sólida primero se pesa la muestra ( ).TxtHumedad. A continuación se deja enfriar la muestra y se pesa nuevamente ( ). 10.TxtMasa1. nM2 nH = 100 * (nM1 . Luego ingrese el siguiente código: Objeto: FrmPrueba_Humedad Parameters nM1. Para el desarrollo de esta aplicación proceder a cera un nuevo método denominado Humedad.Value) nHumedad = Thisform. 4) Procedimiento: Click Procedimiento: Humedad .Value) nMasa2 = Val(Thisform.

en la cual estén incluidos los valores que se piden. Sugerencia Retorne un único valor como una cadena de caracteres. Utilice un formulario de prueba para verificar la funcionalidad del método creado. A manera de ejemplo considere lo siguiente: cRpta = cZodiaco + cDiaNacimiento + cDiasVividos + cFechaHoy Return cRpta . el día de nacimiento y la cantidad de días vividos hasta la fecha actual.Thisform. Debe retornar el signo zodiacal.Refresh Aplicación Nº 4 Escriba un método que reciba como parámetro la fecha de nacimiento del usuario.