msflexgrid
Publicado por Moises (13 intervenciones) el 04/11/2007 03:42:54
Hola Buen día, tengo el siguiente código
'Referencia de las columnas
MSFlexgrid1.Col(0)=Clave del Producto
MSFlexgrid1.Col(1)=Cantidad
MSFlexgrid1.Col(2)=Precio Unitario, Etc.
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim m_strsql As String
Dim m_bolAyu As Boolean
Dim AltDown
AltDown = (Shift And vbAltMask) > 0
If KeyCode = vbKeyEscape Then
'Para Salir
Exit Sub
End If
If KeyCode = vbKeyReturn Then
If MSFlexGrid1.Col = 0 Then
If MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0) = "" Then
'Valido que no pase a la siguiente celda si no hay código del producto
Exit Sub
End If
End If
'paso a las siguientes columnas para aceptar los valores
End If
If KeyCode = vbKeyF2 Then
Call ayudaCatalogo(m_strsql, 0)
'si presiona F2 abre ventana catalogo de productos
End If
If KeyCode = vbKeyF3 Then
'Presiona F3 Elimina una fila, y recalcula los importes del MSFlex
End If
End Sub
Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
'ANALIZA CADA TECLA PORESIONADA, MENOS CARATES DE CONTROL
'PARA ACEPTAR SOLO EN CAMPOS NUMERICOS NUMEROS
'Y ARMAR EL CONTENIDO DE LA CELDA, CARACTER POR CARACTER
If MSFlexGrid1.Col = 0 Then
If KeyAscii >= 32 And KeyAscii <= 127 Then MSFlexGrid1.Text = MSFlexGrid1.Text & UCase(Chr(KeyAscii))
'Acepta Alfanumericos
End If
If MSFlexGrid1.Col >= 1 And MSFlexGrid1.Col <= 4 Then
If KeyAscii = 46 Or (KeyAscii >= 48 And KeyAscii <= 57) Then MSFlexGrid1.Text = MSFlexGrid1.Text & Chr(KeyAscii)
'Acepta Numeros y el punto decimal
End If
End Sub
Private Sub MSFlexGrid1_KeyUp(KeyCode As Integer, Shift As Integer)
If MSFlexGrid1.Col = 0 Or (MSFlexGrid1.Col >= 1 And MSFlexGrid1.Col <= 4) Then
If KeyCode = vbKeyDelete Then
'Con tecla Delete Elimina el contenido de la celda
MSFlexGrid1.Text = ""
Exit Sub
End If
If KeyCode = vbKeyBack Then
If Len(MSFlexGrid1.Text) > 0 Then
'Con Tecla Back Space de Derecha a Izquierda elimina un caracter
MSFlexGrid1.Text = Left(MSFlexGrid1.Text, Len(MSFlexGrid1.Text) - 1)
End If
Exit Sub
End If
End If
End Sub
El Lío que tengo, es que para introducir algún valor en la celda actual(cuando la celda ya tiene un dato), presiono la Tecla Delete o Suprimir, para eliminar el valor de la celda, e introducir el nuevo valor, y eso lo hago en "If KeyCode = vbKeyDelete". Bien no encuentro como hacer para que, al introducir el primer caracter en la celda, se elimine el contenido de esta y acepte el nuevo valor, sin tener que presionar la tecla Delete o Suprimir.
Bueno espero no molestar y sobre todo no haber mareado con tanto rollo, le agradezco sus comentarios y sugerencias.
Moisés Fabro.
'Referencia de las columnas
MSFlexgrid1.Col(0)=Clave del Producto
MSFlexgrid1.Col(1)=Cantidad
MSFlexgrid1.Col(2)=Precio Unitario, Etc.
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim m_strsql As String
Dim m_bolAyu As Boolean
Dim AltDown
AltDown = (Shift And vbAltMask) > 0
If KeyCode = vbKeyEscape Then
'Para Salir
Exit Sub
End If
If KeyCode = vbKeyReturn Then
If MSFlexGrid1.Col = 0 Then
If MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0) = "" Then
'Valido que no pase a la siguiente celda si no hay código del producto
Exit Sub
End If
End If
'paso a las siguientes columnas para aceptar los valores
End If
If KeyCode = vbKeyF2 Then
Call ayudaCatalogo(m_strsql, 0)
'si presiona F2 abre ventana catalogo de productos
End If
If KeyCode = vbKeyF3 Then
'Presiona F3 Elimina una fila, y recalcula los importes del MSFlex
End If
End Sub
Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
'ANALIZA CADA TECLA PORESIONADA, MENOS CARATES DE CONTROL
'PARA ACEPTAR SOLO EN CAMPOS NUMERICOS NUMEROS
'Y ARMAR EL CONTENIDO DE LA CELDA, CARACTER POR CARACTER
If MSFlexGrid1.Col = 0 Then
If KeyAscii >= 32 And KeyAscii <= 127 Then MSFlexGrid1.Text = MSFlexGrid1.Text & UCase(Chr(KeyAscii))
'Acepta Alfanumericos
End If
If MSFlexGrid1.Col >= 1 And MSFlexGrid1.Col <= 4 Then
If KeyAscii = 46 Or (KeyAscii >= 48 And KeyAscii <= 57) Then MSFlexGrid1.Text = MSFlexGrid1.Text & Chr(KeyAscii)
'Acepta Numeros y el punto decimal
End If
End Sub
Private Sub MSFlexGrid1_KeyUp(KeyCode As Integer, Shift As Integer)
If MSFlexGrid1.Col = 0 Or (MSFlexGrid1.Col >= 1 And MSFlexGrid1.Col <= 4) Then
If KeyCode = vbKeyDelete Then
'Con tecla Delete Elimina el contenido de la celda
MSFlexGrid1.Text = ""
Exit Sub
End If
If KeyCode = vbKeyBack Then
If Len(MSFlexGrid1.Text) > 0 Then
'Con Tecla Back Space de Derecha a Izquierda elimina un caracter
MSFlexGrid1.Text = Left(MSFlexGrid1.Text, Len(MSFlexGrid1.Text) - 1)
End If
Exit Sub
End If
End If
End Sub
El Lío que tengo, es que para introducir algún valor en la celda actual(cuando la celda ya tiene un dato), presiono la Tecla Delete o Suprimir, para eliminar el valor de la celda, e introducir el nuevo valor, y eso lo hago en "If KeyCode = vbKeyDelete". Bien no encuentro como hacer para que, al introducir el primer caracter en la celda, se elimine el contenido de esta y acepte el nuevo valor, sin tener que presionar la tecla Delete o Suprimir.
Bueno espero no molestar y sobre todo no haber mareado con tanto rollo, le agradezco sus comentarios y sugerencias.
Moisés Fabro.
Valora esta pregunta


0