Upload
marcelorod
View
18
Download
1
Embed Size (px)
DESCRIPTION
Capítulo 9 vs Basic - El Control MSFlexGrid - Mat Del Alumno
Citation preview
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
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
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