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 |