guía foxpro

57
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 Aportación de: Carlos Castillo Peralta Abel Olivas Martínez Pág. 1

Upload: aom-umom

Post on 05-Aug-2015

267 views

Category:

Documents


14 download

TRANSCRIPT

Page 1: 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

Page 2: Guía foxpro

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

Page 3: Guía foxpro

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

Page 4: Guía foxpro

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

Page 5: Guía foxpro

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

Page 6: Guía foxpro

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

Page 7: Guía foxpro

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

Page 8: Guía foxpro

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

Page 9: Guía foxpro

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

Page 10: Guía foxpro

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

Page 11: Guía foxpro

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

Page 12: Guía foxpro

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

Page 13: Guía foxpro

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

Page 14: Guía foxpro

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

Page 15: Guía foxpro

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

Page 16: Guía foxpro

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

Page 17: Guía foxpro

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

Page 18: Guía foxpro

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

Page 19: Guía foxpro

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

Page 20: Guía foxpro

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

Page 21: Guía foxpro

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

Page 22: Guía foxpro

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

Page 23: Guía foxpro

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

Page 24: Guía foxpro

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

Page 25: Guía foxpro

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

Page 26: Guía foxpro

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

Page 27: Guía foxpro

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

Page 28: Guía foxpro

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

Page 29: Guía foxpro

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

Page 30: Guía foxpro

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

Page 31: Guía foxpro

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

Page 32: Guía foxpro

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

Page 33: Guía foxpro

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

Page 34: Guía foxpro

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

Page 35: Guía foxpro

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

Page 36: Guía foxpro

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

Page 37: Guía foxpro

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

Page 38: Guía foxpro

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

Page 39: Guía foxpro

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

Page 40: Guía foxpro

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

Page 41: Guía foxpro

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

Page 42: Guía foxpro

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

Page 43: Guía foxpro

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

Page 44: Guía foxpro

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

Page 45: Guía foxpro

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

Page 46: Guía foxpro

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