Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
9.2 Propiedades
Propiedad Descripción
AllowUserResizing Esta propiedad permite redimensionar el ancho de las columnas o la altura de las
filas. Para ello, en la columna o fila fija, situar el puntero del Mouse sobre la línea
divisoria de las celdas y arrastrar hasta obtener el tamaño adecuado. La
propiedad AllowUserResizing presenta estas opciones:
0-flexResizeNone El usuario no puede cambiar el tamaño de las celdas.
1-flexResizeColumns El usuario sólo puede cambiar el ancho de las columnas.
2-flexResizeRows El usuario sólo puede cambiar la altura de las filas.
3-flexResizeBoth El usuario puede cambiar el tamaño de filas y columnas.
Cols Determina el número total de columnas que tendrá el control MSFlexGrid.
Rows Determina el número total de filas que tendrá el control MSFlexGrid.
FixedCols Define el número total de columnas fijas no desplazables que tendrá el control.
FixedRows Determina el número total de filas fijas no desplazables que tendrá el control.
FormatString Permite establecer en tiempo de diseño el ancho de las columnas, las
alineaciones y el texto de las filas y columnas fijas del control MSFlexGrid. La
propiedad FormatString está compuesta por dos segmentos separados por
barras verticales (|). El texto entre dos barras define una nueva columna o fila y
puede contener también los siguientes caracteres de alineación:
< Alinea la columna a la izquierda.
A Centra la columna.
> Alinea la columna a la derecha.
ColWidth Permite ajustar el ancho de una celda. Especificar en twips el nuevo ancho.
RowHeight Permite ajustar la altura de una celda. Especificar en twips la nueva altura de la
celda. Por ejemplo, las siguientes instrucciones amplían la segunda fila y la
tercera columna de la rejilla a 1500 twips:
Número de la fila cuyo tamaño es modificado.
MSFlexGrid1.RowHeight(2) = 1500
MSFlexGrid1.ColWidth(3) = 1500 Medidas en twips.
Número de la columna cuyo tamaño es modificado.
ScrollBars Permite utilizar barras de desplazamiento para tener acceso a cualquier parte del
control MSFlexGrid. Para ello, asignar uno de estos valores a la propiedad
ScrollBars:
0-FlexScrollBarNone Hace que la rejilla no tenga barra de desplazamiento.
1-FlexScrollBarHorizontal Hace que la rejilla tenga una barra de desplazamiento
horizontal.
2-FlexScrollBarVertical Hace que la rejilla tenga una barra de desplazamiento
vertical.
3-FlexScrollBarBoth Hace que la rejilla tenga ambas barras de
desplazamiento.
SelectionMode Permite restringir la forma en que serán seleccionadas las celdas. Para ello,
asignar uno de estos valores a la propiedad SelectionMode:
0-FlexSelectionFree Permite seleccionar celdas libremente, como en una
hoja de cálculo.
1-FlexSelectionByRow Fuerza la selección por filas.
2-FlexSelectionByColumn Fuerza la selección por columnas.
FillStyle Determina si al establecer la propiedad TextMatrix o una de las propiedades de
formato de celda del control MSFlexGrid los cambios se aplican a todas las
celdas seleccionadas. La propiedad FillStyle presenta estas opciones:
0-FlexFillSingle Los cambios afectan sólo a la celda activa.
1-FlexFillRepeat Los cambios afectan a todas las celdas seleccionadas.
9.3 Sucesos
Suceso Descripción
EnterCell Este suceso se produce cuando se selecciona una nueva celda.
LeaveCell Este suceso se produce cuando se abandona una celda.
9.4 Introducir datos en una celda.- La intersección de una fila y una columna conforman
una celda. Para introducir un valor en una celda se utiliza la propiedad TextMatrix. Por
ejemplo, para introducir la palabra “Préstamo” en la celda 0, 2 (fila 0, columna 2) escribir la
siguiente instrucción de programa:
MSFlexGrid1.TextMatrix(0,2) = ”Préstamo”
Para introducir el número 3250 en la celda 3, 2 (fila 3, columna 2) escribir la siguiente
instrucción:
MSFlexGrid1.TextMatrix(3, 2) = 3250
de la celda inferior derecha del rango utilizando las propiedades RowSel y ColSel. Por
ejemplo, las siguientes instrucciones seleccionarán un rango de 8 celdas (celda 3, 2 a 6, 3):
MSFlexGrid1.Row = 3
MSFlexGrid1.Col = 2
MSFlexGrid1.RowSel = 6
MSFlexGrid1.ColSel = 3
La siguiente figura muestra la selección anterior:
Observar que, de todas las celdas seleccionadas, la primera no aparece resaltada. Esta
se distingue del resto porque también es la celda activa.
Para restringir la forma en que se seleccionan las celdas utilizar la propiedad
SelectionMode en la Ventana Propiedades.
9.5 Despliegue de información en las celdas.- Para ver con detalle la manera de utilizar
el control MSFlexGrid, se desarrollará una aplicación que calcule la cantidad requerida como
pagos periódicos para amortizar un préstamo en un periodo de tiempo especificado. Los
datos que hay que introducir son el Capital prestado, el tipo de interés por periodo y el plazo
(número de cuotas a pagar). Este programa supone que todos los plazos son iguales.
El cálculo se basa en la fórmula:
Ci (1 i ) N
P
(1 i ) N 1
Donde:
P = pago periódico (cuota)
i = tipo de interés periódico
C = préstamo (Capital prestado)
N = número de pagos (plazo)
Diseñar una interfaz similar a la siguiente ilustración:
1. Hacer clic en el comando ‘Nuevo proyecto’ del menú Archivo para crear una nueva
aplicación.
2. Guardar el formulario con nombre Plandepagos.frm y la aplicación con nombre
Plandepagos.vbp.
3. Hacer clic en el comando Componentes del menú Proyecto. Pulsar sobre la ficha
Controles del cuadro de diálogo Componentes
4. Introducir una marca de verificación en el elemento Microsoft FlexGríd Control 6.0 y hacer
clic en Aceptar.
El siguiente cuadro resume las propiedades asignadas a cada uno de los controles:
Control Propiedad Valor
Image Name Boton
Index 0
Picture CalcularIn.bmp
Image Name Boton
Index 1
Picture Salir.bmp
Image Name Salir
Picture Salir.bmp
Visible False
Image Name SalirB
Picture SalirBaj.bmp
Visible False
Image Name SalirS
Picture SalirSob.bmp
Visible False
Image Name Calcular
Picture Calcular.bmp
Visible False
Image Name CalcularB
Picture CalcularBaj.bmp
Visible False
Image Name CalcularS
Picture CalcularSob.bmp
Visible False
Image Name CalcularI
Picture CalcularIn.bmp
Visible False
Luego de asignar las propiedades a cada uno de los controles Image, seleccionar el
control MSFlexGrid y ampliarlo de modo que COPE el ancho del formulario, cubriendo
algunos controles Image que, al no ser visibles en ejecución, no serán afectados en su
funcionalidad. El formulario quedará similar a la siguiente ilustración:
Asociar procedimientos al cuadro de texto Interés accionados por los sucesos Change
y KeyPress. Sólo debe permitir el ingreso de valores numéricos en el cuadro de texto Interés
y al presionar la tecla Enter, el cursor debe ubicarse en la casilla Capital.
1. Hacer doble en el cuadro de texto Interés. La ventana de código abre el procedimiento
Interés_Change.
2. Digitar el siguiente procedimiento:
Private Sub Interes_Change()
If IsNumeric(Interes.Text) And Val(Interes.Text) >= 0 Then
i = Val(Interes.Text) / 100
sw3 = True
If sw1 And sw2 And sw3 Then
Boton(0).Picture = Calcular.Picture
End If
Else
Boton(0).Picture = CalcularI.Picture
MsgBox "Introduzca solo números positivos", , "Error de ingreso"
sw3 = False
End If
End Sub
Luego seleccionar el suceso KeyPress y digitar el siguiente código
Private Sub Interes_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Capital.SetFocus
End If
End Sub
Asociar un procedimiento al array de controles Botón accionado por el suceso
MouseMove. Cuando el usuario desplace el puntero del mouse sobre uno de estos dos
botones, este procedimiento se ejecutará y cambiará el gráfico del botón.
1. Hacer doble clic sobre uno de los controles Botón.
2. En la ventana de código, desplegar el cuadro de lista Procedimientos y seleccionar el
suceso MouseMove.
3. Digitar el siguiente procedimiento:
Private Sub Boton_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
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
End Sub
Asociar un procedimiento al formulario accionado por el suceso MouseMove. Cuando
el usuario desplace el puntero del mouse sobre el formulario, este procedimiento se ejecutará
y cambiará los gráficos de los controles Botón.
1. Hacer doble clic en el formulario.
End Select
End Sub
Asociar otro procedimiento al array de controles Botón accionado por el suceso
MouseUp. Cuando el usuario sitúe el puntero del mouse sobre el botón Botón(0) o Botón(1),
pulse y suelte el botón izquierdo del mouse, se ejecutará este procedimiento y cambiará el
gráfico del control Botón(0) o finalizará la ejecución del programa.
1. Hacer doble clic sobre uno de los controles Botón.
2. En la ventana de código, desplegar el cuadro de lista Procedimientos y seleccionar el
suceso MouseUP.
3. Digitar el siguiente código:
Private Sub Boton_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
Select Case Index
Case 0
If Boton(0).Picture = CalcularB.Picture Then
Boton(0).Picture = Calcular.Picture
End If
Case 1
End
End Select
End Sub
Digitar el procedimiento LimpiarRejilla. Este procedimiento limpiará todos los datos de
las celdas en el control MSFlexGrid.
Public Sub limpiarrejilla()
With Rejilla
.Rows = n + 4
.Row = 1
.Col = 0
.RowSel = .Rows - 1
.ColSel = .Cols - 1
.FillStyle = flexFillRepeat
.Text = ""
End With
End Sub
Presionar la tecla F5 para ejecutar el programa. Introducir el Capital, Nro. de periodos
(Plazo) y el Interés por periodo.
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
Caption ““
AutoSize True
Label Name Mensaje2
Caption ““
AutoSize True
Label Name Mensaje3
Caption ““
AutoSize True
Hacer Clic en el menú Proyecto y seleccionar el Sub-menú Agregar Módulo. Cuando el
Visual Basic despliegue el cuadro de diálogo Agregar módulo, hacer clic en el comando Abrir.
En la ventana que abre el Visual Basic, digitar la estructura del archivo de alumnos con
nombre de registro Reg_Alumnos, al final definir la variable Alumnos de tipo Reg_Alumnos
para que tenga la misma estructura de datos de acuerdo al siguiente detalle
Type Reg_Alumnos
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
End Type
Global Alumnos As Reg_Alumnos
Guardar el formulario con el nombre MantDatos.frm y la aplicación con el nombre
MantDatos.vbp. La interfaz debe tener el siguiente aspecto:
If Fila >= 21 Then .AddItem (" ") 'Añade una nueva fila al control MSFlexGrid
End If
Next i
Campo.Text = .TextMatrix(1, 0)
End With
Else
Exit Sub
End If
End Sub
Para el mantenimiento del archivo de alumnos, cuyo nombre se definió al crearlo en
una práctica anterior, el usuario debe modificar, ingresar y eliminar registros. Para eliminar un
registro, el usuario debe seleccionar el registro situando el puntero del mouse sobre el
registro y haciendo clic sobre él. Seguidamente, debe hacer clic en el botón Eliminar.
Para ingresar un nuevo registro, el usuario debe hacer clic con el botón derecho del
mouse sobre el control MSFlexGrid (el control Campo debe aparecer enfocado después del
último registro), ingresar los datos del nuevo registro y hacer clic en el botón Guardar.
Para modificar los campos de un registro, el usuario debe mantener presionada la
tecla Alt, situar el puntero del mouse sobre uno de los campos de un determinado registro y
hacer clic. Luego de realizar las modificaciones en el campo y presionar la tecla Enter, el
usuario debe hacer clic en el botón Modificar.
Asociar un procedimiento al control MSFlexGrid accionado por el suceso MouseUp.
Este procedimiento debe responder a las siguientes acciones realizadas por el usuario: un
clic con el botón izquierdo del mouse sobre un registro, un clic con el botón derecho del
mouse sobre el control MSFlexGrid y un clic sobre un campo mientras la tecla Alt está
presionada.
Si el usuario hace clic con el botón izquierdo del mouse sobre un registro, el registro
debe quedar seleccionado y la variable AuxCod debe almacenar el código del mismo. Si el
usuario hace clic con el botón derecho del mouse sobre el control MSFlexGrid, el programa
debe seleccionar la celda ubicada más a la izquierda después del último registro. Si el
usuario mantiene presionada la tecla Alt y pulsa el botón izquierdo del mouse sobre una de
las celdas del control MSFlexGrid, el programa debe seleccionar la celda, guardar el código
del registro que contiene a la celda en la variable AuxCodigo y el número de la fila en la
variable XFila.
1. Hacer doble clic en el control MSFlexGrid. En la ventana de código desplegar el cuadro de
lista Procedimientos y seleccionar el suceso MouseUp. La ventana de código abre el
procedimiento Rejilla_MouseUp.
2. Digitar el siguiente código:
Private Sub Rejilla_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
Mensaje2.Caption = " "
Mensaje3.Caption = " "
With Rejilla
'Si se pulsó el botón izquierdo del mouse.
If Button = 1 Then
MantDatos.Caption = "Eliminar registros"
Mensaje1.Caption = "Haga clic en el botón Eliminar para borrar el registro seleccionado."
Guardar.Enabled = False 'Inhabilita el botón de comando Guardar
Modificar.Enabled = False 'Inhabilita el botón de comando Modificar
Eliminar.Enabled = True 'Habilita el botón de comando Eliminar
.Row = .MouseRow: .Col = 0 'Selecciona la fila con el registro que será eliminado.
.RowSel = .MouseRow: .ColSel = .Cols - 1
AuxCéd = .Text 'La Cédula del registro se almacena en la variable AuxCéd
Ing. Hermas Herrera Callejas Página: 14 de 19
Computación para Ingeniería I y Laboratorio CAP 9 – Visual Basic – El control MSFlexGrid
End If
If Button = 2 Then 'Se pulso el botón derecho del mouse.
MantDatos.Caption = "Ingreso de datos"
Mensaje1.Caption = "Ingrese los datos en todos los campos y haga clic en el botón Guardar"
Guardar.Enabled = True 'Habilita el botón de comando Guardar
Modificar.Enabled = False 'Inhabilita el botón de comando Modificar
Eliminar.Enabled = False 'Inhabilita el botón de comando Eliminar
'Selecciona la celda a partir de la cual se ingresarán los datos del nuevo registro.
.Row = Fila + 1
.Col = 0
End If
If Button = 1 And Shift = 4 Then 'Se pulsó la tecla Alt y el botón izquierdo del mouse.
MantDatos.Caption = "Modificar registros"
Mensaje1.Caption = "Presione la tecla Enter para confirmar el cambio realizado"
Mensaje2.Caption = " "
Mensaje3.Caption = " "
Guardar.Enabled = False 'Inhabilita el botón de comando Guardar
Modificar.Enabled = True 'Habilita el botón de comando Modificar
Eliminar.Enabled = False 'Inhabilita el botón de comando Eliminar
.Row = .MouseRow 'Selecciona la celda en la que se hizo clic.
.Col = .MouseCol
AuxCédula = .TextMatrix(.Row, 0) 'La Cédula del registro se almacena en variable AuxCédula.
'El número de la fila en la que se encuentra la celda seleccionada es almacenado en la variable XFila.
XFila = .Row
End If
End With
End Sub
Asociar otro procedimiento al control MSFlexGrid accionado por el suceso EnterCell.
El suceso EnterCell tiene lugar cada vez que se selecciona una nueva celda. El
procedimiento deberá:
1. Borrar el contenido del cuadro de texto Campo.
2. Ocultar el cuadro de texto Campo.
3. Situar el cuadro de texto Campo sobre la celda seleccionada y ajustar su tamaño al de ésta.
4. Asignar el contenido de la celda seleccionada a la propiedad Text del cuadro de texto Campo.
5. Visualizar el cuadro de texto Campo.
6. Mover el enfoque al cuadro de texto Campo.
Seguir estos pasos para asociar un procedimiento al control MSFIexGrid accionado
por el suceso EnterCell:
1. Hacer doble clic en el control MSFIexGríd. En la ventana de código desplegar el cuadro
de lista Procedimientos y seleccionar el suceso EnterCell. La ventana de código abre el
procedimiento Rejilla_EnterCell.
2. Digitar el siguiente código:
Private Sub Rejilla_EnterCell()
Campo.Text = " " 'Borra el contenido del control TextBox
Campo.Visible = True 'Oculta el control TextBox
Campo.Top = Rejilla.Top + Rejilla.CellTop 'Sitúa el control TextBox sobre la celda seleccionada
Campo.Left = Rejilla.Left + Rejilla.CellLeft
'Ajusta el tamaño del control TextBox al tamaño de la celda seleccionada
Campo.Width = Rejilla.CellWidth
Campo.Height = Rejilla.CellHeight
'Asigna el contenido de la celda seleccionada a la propiedad Text del control TextBox
Campo.Text = Rejilla.Text
Guardar.Enabled = False
End Sub
Asociar un procedimiento al botón de comando Modificar accionado por el suceso
Click. Cuando el usuario haga clic en este botón, los datos modificados de una determinada
fila del control MSFlexGrid deben ser almacenados en el archivo de alumnos cuyo nombre se
definió al crearlo en una práctica anterior.
1. Hacer doble clic en el botón de comando Modificar. La ventana de código muestra el
procedimiento Modificar_Click.
2. Digitar el siguiente procedimiento:
Private Sub Modificar_Click()
Dim i As Integer
Dim encontrado As Boolean
MantDatos.Caption = "Modificar datos"
For i = 1 To LOF(1) \ Len(Alumnos)
Get #1, i, Alumnos
If Trim(Alumnos.Cédula) = Trim(AuxCédula) And Alumnos.SW = "1" Then
encontrado = True
posición = i
Exit For
End If
Next i
If encontrado Then
Alumnos.Cédula = Rejilla.TextMatrix(XFila, 0)
Alumnos.Paterno = Rejilla.TextMatrix(XFila, 1)
Alumnos.Materno = Rejilla.TextMatrix(XFila, 2)
Alumnos.Nombres = Rejilla.TextMatrix(XFila, 3)
Alumnos.Dirección = Rejilla.TextMatrix(XFila, 4)
Alumnos.Fecha_Nac = Rejilla.TextMatrix(XFila, 5)
Alumnos.Género = Rejilla.TextMatrix(XFila, 6)
Put #1, posición, Alumnos
Consultar_Click
End If
Modificar.Enabled = False
End Sub
Asociar un procedimiento al botón de comando Eliminar accionado por el suceso Click.
Cuando el usuario haga clic en este botón, el registro seleccionado debe ser eliminado del
archivo de alumnos, cuyo nombre se definió al crearlo en una práctica anterior.
1. Hacer doble clic en el botón de comando Eliminar. La ventana de código muestra el
procedimiento Eliminar_Click().
2. Digitar el siguiente procedimiento:
Private Sub Eliminar_Click()
Dim i, posición As Integer
Dim encontrado As Boolean
MantDatos.Caption = "Eliminar datos"
encontrado = False
For i = 1 To LOF(1) \ Len(Alumnos)
Get #1, i, Alumnos
If Trim(Alumnos.Cédula) = Trim(AuxCéd) Then
encontrado = True
posición = i
Exit For
End If
Next i
If encontrado Then
Get #1, posición, Alumnos
Alumnos.SW = "0"
Put #1, posición, Alumnos
Consultar_Click
End If
Eliminar.Enabled = False 'lnhabilita el botón Eliminar
End Sub
El procedimiento LimpiarRegistros tiene la función de limpiar las celdas del control
MSFlexGrid.
Public Sub LimpiarRegistros()
With Rejilla
'Selecciona todas las celdas del control MSFlexGrid menos las de la fila 0
.Row = 1: .Col = 0: .RowSel = .Rows - 1: .ColSel = .Cols - 1
'Los cambios afectan a todas las celdas seleccionadas
.FillStyle = flexFillRepeat
.Text = " "
.FillStyle = flexFillSingle 'Los cambios afectan sólo a la celda activa
.Row = 1: .Col = 0: 'Selecciona la celda 1,0
End With
End Sub
Hacer doble clic en el botón de comando Salir. En la ventana de código digitar el
siguiente código:
Private Sub Salir_Click()
Close 'Cierra el archivo de alumnos
Unload Me
End 'Finaliza la ejecución del programa
End Sub
Presionar la tecla F5 para ejecutar el programa. Hacer clic en el botón Consultar y los
datos del archivo de alumnos aparecerán en las celdas del control MSFlexGrid. Para eliminar
un registro, situar el puntero del mouse sobre el registro y hacer clic (el registro queda
resaltado bajo un fondo azul y el botón Eliminar se activa). Hacer clic en el botón Eliminar y
los registros serán eliminados del archivo de alumnos.