3
Ing. Hermas Herrera Callejas Página : 1 de 3 (15) Plan de pagos (Control MSFlexGrid) Añadir Microsoft FlexGrid Control 6.0 al cuadro de herramientas El programa debe calcular un plan de pagos de un préstamo, determinando la cuota total constante, el interés de cada periodo y la amortización periódica sobre la base de los datos entrados. En tiempo de diseño se debe armar la interfaz como sigue: Arreglo Botón SalirS Salir SalirB Calcular CalcularB CalcularI CalcularS Utilizará la sgte. Fórmula 1 ) 1 ( ) 1 ( N N i i Ci P Donde P = Pagos periódicos constantes, C = Capital prestado i = Tasa de interés por periodo, N = Plazo (Nro de periodos) „ Usar propiedad FormatString para títulos en columnas Definir variables para Capital, Interes, Periodos y Pagos de tipo doble así como 3 switches (sw1, sw2, sw3) de tipo booleano Al cargar el formulario centrarlo en la pantalla El Botón Calcular debe estar inhibido Al mover el mouse por el formulario Si los botones del array están sobrerelieve, deben normalizarse Si en Capital solo se entran números > o = 0 convertir los valores a números y cambiar a true el sw1 „ Se puede usar: If IsNumeric(Capital.Text) and Val(Capital.Text) >= 0 Then… Si los 3 switches están en true, debe habilitar el botón Calcular Caso de no haberse digitado números, debe enviar un mensaje, Inhabilitar el Botón Calcular y permanecer el sw1 en False Al presionar Enter ubicar el cursor en Nro de periodos Si en Nro. Periodos solo se entran números > o = 0 convertir los valores a números y cambiar a true el sw2 Si los 3 switches están en true, debe habilitar el botón Calcular Caso de no haberse digitado números, debe enviar un mensaje, „ Inhabilitar el Botón Calcular y permanecer el sw2 en False Al presionar Enter ubicar cursor en Interés por periodo Si en Interés por periodo solo se entran números > o = 0 convertir los valores a números y cambiar a true el sw3 Si los 3 switches están en true, debe habilitar el boton Calcular Caso de no haberse digitado números, debe enviar un mensaje, Inhabilitar el Botón Calcular y permanecer el sw3 en False Al presionar Enter (KeyAscii 13) ubicar cursor en Capital Al mover el mouse por el array de controles Image ejecutar: Select Case Index Case 0 If Boton(0).Picture = Calcular.Picture Then Boton(0).Picture = CalcularS.Picture End If Boton(1).Picture = Salir.Picture Case 1 If Boton(0).Picture = CalcularS.Picture Then Boton(0).Picture = Calcular.Picture End If Boton(1).Picture = SalirS.Picture End Select Al clic del mouse en el array de botones, ejecutar lo siguiente: Dim fila As Integer Dim sumaamort, sumacuotas, amort, Intere, sumaint As Double Cap = Val(Capital.Text) Select Case Index Case 0 If Boton(0).Picture = CalcularS.Picture Then Boton(0).Picture = CalcularB.Picture MousePointer = 11 limpiarrejilla pag = (Cap * i * (1 + i) ^ n) / ((1 + i) ^ n - 1) sumaint = 0: sumaamort = 0: sumacuotas = 0 With Rejilla For fila = 1 To n .TextMatrix(fila, 0) = fila .TextMatrix(fila, 1) = Format(Cap, "###,##0.00") Intere = Cap * i .TextMatrix(fila, 2) = Format(Intere, "#,##0.00") amort = pag - Intere .TextMatrix(fila, 3) = Format(amort, "#,##0.00") .TextMatrix(fila, 4) = Format(pag, "#,##0.00") Cap = Cap - amort sumaint = sumaint + Intere sumaamort = sumaamort + amort sumacuotas = sumacuotas + pag Next fila .TextMatrix(fila, 2) = Format(sumaint, "##,##0.00") .TextMatrix(fila, 3) = Format(sumaamort, "##,##0.00") .TextMatrix(fila, 4) = Format(sumacuotas, "###,##0.00") End With MousePointer = 0 End If Case 1 Boton(1).Picture = SalirB.Picture End Select Entrar procedimiento limpiarregilla para limpiar el MSFGlexGrid With Rejilla .Rows = n + 4 .Row = 1 .Col = 0 .RowSel = .Rows - 1 .ColSel = .Cols - 1 .FillStyle = flexFillRepeat .Text = "" End With

Capítulo 9 vs Basic - El Control MSFlexGrid - Mat Del Alumno

Embed Size (px)

DESCRIPTION

Capítulo 9 vs Basic - El Control MSFlexGrid - Mat Del Alumno

Citation preview

Page 1: Capítulo 9 vs Basic - El Control MSFlexGrid - Mat Del Alumno

Ing. Hermas Herrera Callejas Página : 1 de 3

(15) Plan de pagos (Control MSFlexGrid)

Añadir Microsoft FlexGrid Control 6.0 al cuadro de herramientas

„ El programa debe calcular un plan de pagos de un préstamo,

„ determinando la cuota total constante, el interés de cada periodo y „ la amortización periódica sobre la base de los datos entrados.

„ En tiempo de diseño se debe armar la interfaz como sigue:

Arreglo Botón SalirS Salir SalirB Calcular

CalcularB CalcularI CalcularS

Utilizará la sgte. Fórmula 1)1(

)1(N

N

i

iCiP

Donde P = Pagos periódicos constantes, C = Capital prestado

i = Tasa de interés por periodo, N = Plazo (Nro de periodos)

„ Usar propiedad FormatString para títulos en columnas

„ Definir variables para Capital, Interes, Periodos y Pagos de tipo

„ doble así como 3 switches (sw1, sw2, sw3) de tipo booleano

„ Al cargar el formulario centrarlo en la pantalla

„ El Botón Calcular debe estar inhibido

„ Al mover el mouse por el formulario

„ Si los botones del array están sobrerelieve, deben normalizarse

„ Si en Capital solo se entran números > o = 0

„ convertir los valores a números y cambiar a true el sw1 „ Se puede usar: If IsNumeric(Capital.Text) and Val(Capital.Text) >= 0 Then…

„ Si los 3 switches están en true, debe habilitar el botón Calcular

„ Caso de no haberse digitado números, debe enviar un mensaje,

„ Inhabilitar el Botón Calcular y permanecer el sw1 en False

„ Al presionar Enter ubicar el cursor en Nro de periodos

„ Si en Nro. Periodos solo se entran números > o = 0 „ convertir los valores a números y cambiar a true el sw2

„ Si los 3 switches están en true, debe habilitar el botón Calcular

„ Caso de no haberse digitado números, debe enviar un mensaje,

„ Inhabilitar el Botón Calcular y permanecer el sw2 en False

„ Al presionar Enter ubicar cursor en Interés por periodo

„ Si en Interés por periodo solo se entran números > o = 0

„ convertir los valores a números y cambiar a true el sw3

„ Si los 3 switches están en true, debe habilitar el boton Calcular

„ Caso de no haberse digitado números, debe enviar un mensaje,

„ Inhabilitar el Botón Calcular y permanecer el sw3 en False

„ Al presionar Enter (KeyAscii 13) ubicar cursor en Capital

„ Al mover el mouse por el array de controles Image ejecutar:

Select Case Index

Case 0 If Boton(0).Picture = Calcular.Picture Then

Boton(0).Picture = CalcularS.Picture

End If

Boton(1).Picture = Salir.Picture

Case 1

If Boton(0).Picture = CalcularS.Picture Then

Boton(0).Picture = Calcular.Picture

End If

Boton(1).Picture = SalirS.Picture

End Select

„ Al clic del mouse en el array de botones, ejecutar lo siguiente: Dim fila As Integer

Dim sumaamort, sumacuotas, amort, Intere, sumaint As Double

Cap = Val(Capital.Text)

Select Case Index

Case 0

If Boton(0).Picture = CalcularS.Picture Then

Boton(0).Picture = CalcularB.Picture

MousePointer = 11

limpiarrejilla

pag = (Cap * i * (1 + i) ^ n) / ((1 + i) ^ n - 1)

sumaint = 0: sumaamort = 0: sumacuotas = 0

With Rejilla For fila = 1 To n

.TextMatrix(fila, 0) = fila

.TextMatrix(fila, 1) = Format(Cap, "###,##0.00")

Intere = Cap * i

.TextMatrix(fila, 2) = Format(Intere, "#,##0.00")

amort = pag - Intere

.TextMatrix(fila, 3) = Format(amort, "#,##0.00")

.TextMatrix(fila, 4) = Format(pag, "#,##0.00")

Cap = Cap - amort

sumaint = sumaint + Intere

sumaamort = sumaamort + amort sumacuotas = sumacuotas + pag

Next fila

.TextMatrix(fila, 2) = Format(sumaint, "##,##0.00")

.TextMatrix(fila, 3) = Format(sumaamort, "##,##0.00")

.TextMatrix(fila, 4) = Format(sumacuotas, "###,##0.00")

End With

MousePointer = 0

End If

Case 1

Boton(1).Picture = SalirB.Picture

End Select „ Entrar procedimiento limpiarregilla para limpiar el MSFGlexGrid

With Rejilla

.Rows = n + 4

.Row = 1

.Col = 0

.RowSel = .Rows - 1

.ColSel = .Cols - 1

.FillStyle = flexFillRepeat

.Text = ""

End With

Page 2: Capítulo 9 vs Basic - El Control MSFlexGrid - Mat Del Alumno

Ing. Hermas Herrera Callejas Página : 2 de 3

(16) Edición de Datos (Control MSFlexGrid)

Integrar el control TextBox con el control MSFlexGrid. Mantenimiento del archivo de alumnos

La interfaz tendrá cinco controles CommandButton, un control TextBox, un CommonDialog y un MSFlexGrid.

Incorporar en el cuadro de herramientas los controles Microsoft Common Dialog Control 6.0 y Microsoft FlexGrid Control 6.0, antes de

llevarlos a la Interfaz del Usuario. Propiedades de los controles:

Control Propiedad Valor .

Form Name MantDatos

Caption Mantenimiento archivo de alumnos

TextBox Name Campo

BorderStyle 0-None

Text “”

Visible False

CommandButton Name Corrsultar

Caption Consultar

CommandButton Name Guardar Caption Guardar

CommandButton Name Modificar

Caption Modificar

CommandButton Name Eliminar

Caption Eliminar

CommandButton Name Salir

Caption Salir

MSFlexGrid Name Rejilla

AllowUserResizing 1 – flexResizeColumns

Rows 25

Cols 12

Enabled False

FixedRows 1

FixedCols 0

FormatString Cédula|<Paterno |<Materno

|<Nombres |<Dirección

|<F.de Nacim|<Gén

|<Sw | ScrollBars 3-flexScrollBarBoth

CommonDialog Name Abrir

Label Name Mensaje1

AutoSize True

Label Name Mensaje2

AutoSize True

Label Name Mensaje3

AutoSize True

Agregar en un módulo la estructura Reg_Alumnos del archivo de

alumnos de acuerdo al siguiente detalle

Cédula As String * 10

Paterno As String * 20 Materno As String * 20

Nombres As String * 30

Dirección As String * 40

Fecha_Nac As Date

Género As String * 1

SW As String * 1

Definir la variable Alumnos con esta estructura

Global Alumnos As Reg_Alumnos

Asociar un procedimiento a cada uno de los controles:

Dim AuxCéd, AuxCédula As String

Dim Fila, XFila As Integer Al cargar el formulario:

Lo sitúa en el centro de la pantalla

lnhabilita botones Ingresar, Modificar y Eliminar

Abrir el archivo de alumnos usando cuadro de diálogo

Al hacer clic en Consultar

Los datos del archivo alumnos, deben copiarse al MSFlexGrid.

El título del formulario debe ser “Consulta de datos"

Los Label deben mostrar mensajes:

"Haga clic con el botón izquierdo del mouse sobre un registro

para eliminarlo."

"Haga clic con el botón derecho del mouse para añadir

un registro."

"Presione la tecla Alt y haga clic sobre un campo para

realizar modificaciones." Inhabilita botones Guardar, Modificar y Eliminar

Habilita el control MSFlexgrid

Calcula el total de registros

Llama al procedimiento LimpiarRegistros

Iterativamente para todos los registros

Lee un registro

Si el SW es 1

Incrementa Fila en 1

Mueve los campos del archivo al MSFlexGris

Si Fila >= 21 Añade nueva fila al MSFlexGrid

En el TextBox Campo guarda el contenido de la celda (1,0) Con el suceso MouseUp en el MSFlexGrid

Borrar Mensaje2

Borrar Mensaje3

Si se pulsó el botón izquierdo del mouse.

Título del formulario "Eliminar registros"

Mensaje1 "Haga clic en el botón Eliminar para borrar el

registro seleccionado."

Inhabilita botones Guardar y Modificar

Habilita botón Eliminar

Selecciona fila con registro a eliminar

Page 3: Capítulo 9 vs Basic - El Control MSFlexGrid - Mat Del Alumno

Ing. Hermas Herrera Callejas Página : 3 de 3

.Row = .MouseRow: .Col = 0

.RowSel = .MouseRow: .ColSel = .Cols - 1

AuxCéd = .Text 'Cédula de registro almacena en AuxCéd

Si se pulsó el botón derecho del mouse

Título de formulario "Ingreso de datos"

Mensaje1 "Ingrese los datos en todos los campos y haga clic

en el botón Guardar"

Habilita botón Guardar Inhabilita botones Modificar y Eliminar

Selecciona celda para ingresar datos.

.Row = Fila + 1

.Col = 0

Si se pulsó Alt y botón izquierdo del mouse.

Título formulario "Modificar registros"

Mensaje1 "Presione la tecla Enter para confirmar el

cambio realizado"

Borrar Mensaje2 y Mensaje3

Inhabilita botones Guardar y Eliminar

Habilita botón Modificar Selecciona celda en que se hizo clic

.Row = .MouseRow

.Col = .MouseCol

Cédula del registro almacena en AuxCédula

AuxCédula = .TextMatrix(.Row, 0)

Fila de celda seleccionada se almacena en XFila.

XFila = .Row

Con suceso EnterCell en MSFlexGrid

Borra el TextBox

Sitúa el TextBox sobre celda seleccionada

Campo.Top = Rejilla.Top + Rejilla.CellTop

Campo.Left = Rejilla.Left + Rejilla.CellLeft Ajusta tamaño de TextBox al de la celda

Campo.Width = Rejilla.CellWidth

Campo.Height = Rejilla.CellHeight

Mueve contenido de celda a TextBox

Campo.Text = Rejilla.Text

Campo.SetFocus

Con suceso LeaveCell en MSFlexGrid

El contenido de TextBox pasa a celda que abandona.

Rejilla.Text = Campo.Text

Con suceso KeyPress en TextBox

Selecciona celda derecha de celda activa.

Si se presionó tecla Enter

Si TextBox no está vacio

Rejilla.Row = Rejilla.RowSel

Rejilla.Col = Rejilla.ColSel + 1

Con Clic en botón Guardar

lngresa nuevo registro en archivo de alumnos.

Alumnos.Cédula = Rejilla.TextMatrix(Fila + 1, 0)

Alumnos.Paterno = Rejilla.TextMatrix(Fila + 1, 1) Alumnos.Materno = Rejilla.TextMatrix(Fila + 1, 2)…etc

Calcula Total Registros en Archivo

Graba registro en siguiente posición

Llama procedimiento Consultar_Click

Inhabilita botón Guardar

Con Clic en Modificar

Título de formulario “Modificar Datos”

Iterativamente busca registro modificado

Transfiere datos de MSFlexGrid al archivo

Alumnos.Cédula = Rejilla.TextMatrix(XFila, 0)

Alumnos.Paterno = Rejilla.TextMatrix(XFila, 1) Alumnos.Materno = Rejilla.TextMatrix(XFila, 2)…etc

Graba registro

Llama a procedimiento Consultar_Click

Inhabilita botón Modificar

Con Clic en Eliminar

Título de formulario "Eliminar datos"

Iterativamente busca registro a eliminar

Al encontrar mueve 0 a SW

Graba registro

Llama a procedimiento Consultar_Click

lnhabilita botón Eliminar

Procedimiento LimpiarRegistros Selecciona todas las celdas de MSFlexGrid menos fila 0

.Row = 1: Col = 0: .RowSel = .Rows - 1: .ColSel = .Cols - 1

Cambios en todas las celdas seleccionadas

.FillStyle = flexFillRepeat

.Text = " "

Cambios solo en celda activa

.FillStyle = flexFillSingle

.Row = 1: .Col = 0:

Con Clic en botón Salir

Termina proceso