La Web del Programador: Comunidad de Programadores
 
    Pregunta:  28720 - COMO UTILIZO EL MSFLEXGRID PARA CAPTURAR DATOS NUMERICOS
Autor:  Arturo Quintanar
Tengo Visual basic version 6 y desearia que me ayudaran en como puedo utilizar el MsFlexgrid, para capturar datos directamente del teclado, es decir, hacer click en una celda y digitar el dato, en realidad no se si se pueda ya que por mas que consulto la ayuda del Msdn (que por desgracia esta en ingles), no me dice nada concreto en como se hace. Puede ser que yo este equivocado en darle ese uso a ese control, si existe otro, mucho agradeceria me lo hicieran notar, junto con un ejemplo.

la siguiente pregunta es, como puedo tomar el dato de una celda del control MsFlexGrid y almacenarlo en un campo de una base de datos.

Mucho agradecere la Ayuda que me puedan proporcionar, para seguir conociendo como funcionan los controles de visual Basic y lo que se puede hacer con dicho programa.

  Respuesta:  Mauricio Leyzaola
Efectivamente, el flexgrid por naturaleza no permite que se edite (quien sabe por que demonios hace Microsoft esto ¿?) pero hay muchos trucos para solucionarlo. Te envío este. Saludos.

'===================================================
'Pon este codigo en el evento Keypress del MSFlexGrid
'===================================================
Private Sub MSFlexGrid_KeyPress(KeyAscii As Integer)

With MSFlexGrid
Select Case KeyAscii

Case 8: 'IF KEY IS BACKSPACE THEN
If .Text <> "" Then .Text = _
Left$(.Text, (Len(.Text) - 1))
Case 13: 'IF KEY IS ENTER THEN
Select Case .Col
Case Is < (.Cols - 1):
SendKeys "{right}"
Case (.Cols - 1):
If (.Row + 1) = .Rows Then
.Rows = .Rows + 1
End If
SendKeys "{home}" + "{down}"
End Select
Case Else
.Text = .Text + Chr$(KeyAscii)
'write your own keyascii Validations under
'commented lines
Select Case .Col
Case 0, 1, 2:
'if (your condition(s)) then
'accept only charectors
'Else
'keyascii=0
'End If
Case Else:
End Select
End Select
End With

End Sub