Cita:
Iniciado por pabje
Hola Avellaneda
Con algunos de estos controles MSFlexGrid o MSHFlexGrid ¿ yo puedo crear una matriz dinamica de ingresos de datos?
En otras palabras una matriz que permita variar(incrementar) el numero de filas a medidia que yo ingreso los datos, ya que los datos que ingresos en esta matriz son variables y no fijos.
Hola pabje,
Claro que se puede, controlando como te dije los eventos KeyPress y KeyDown del Grid.
Te pongo un ejemplo que creo que ya he expuesto alguna vez aquí:
Código:
Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
With MSFlexGrid1
Select Case KeyAscii
Case 32 To 127
' solo se admiten caracteres imprimibles
.Text = .Text & Chr(KeyAscii)
End Select
End With
End Sub
Private Sub MSFlexGrid1_KeyDown(KeyCode As Integer, Shift As Integer)
With MSFlexGrid1
Select Case KeyCode
Case vbKeyDelete ' Tecla [Supr] borramos toda la celda
.Text = ""
Case vbKeyBack ' Tecla [Retroceso] borramos el último caracter
If Len(.Text) > 0 Then
.Text = Left(.Text, Len(.Text) - 1)
End If
Case vbKeyTab, vbKeyReturn ' Teclas [Tab] o [Enter]
If .Col = .Cols - 1 Then
' si es la última columna pasamos al principio de la siguiente fila
If .Row = .Rows - 1 Then
' es la última fila añadimos una nueva
.Rows = .Rows + 1
.TopRow = .Row
End If
.Row = .Row + 1
.Col = 0
.LeftCol = 1
' si no está visible
If .Row < .Rows - 1 Then
If .RowIsVisible(.Row + 1) = False Then .TopRow = .Row
End If
Else
.Col = .Col + 1
End If
End Select
End With
End Sub
Como podrás comprobar, combinando los caracteres pulsados, puedes hacer casi de todo.
Después con otros eventos como EnterCell y LeaveCell puedes hacer mas vistosas la entrada de datos.