-----Original Message-----
From: Domi <domi@arrakis.es>
To: 'Lista VB-ESP' <vb-esp@ccc.uba.ar>
Date: Tuesday, April 21, 1998 6:03 PM
Subject: (VB-ESP) DBGrid - entrada numérica.
>Quisiera que me indicarais como puedo hacer para limitar la entrada en una
columna
>de un dbGrid a, por ejemplo, dos posiciones numéricas. He mirado en la ayuda y
no >encuentro ninguna propiedad del objeto column que me pueda servir. ¿Es
posible >hacerlo?
>
puedes utilizar el evento BeforeColEdit del DBGrid para darte cuenta que el
usuario va a editar la columna, y si la columna que quieren editar es la columna
donde quieres controlar la entrada, muestras un textbox oculto, le das el foco y
pones el parámetro cancel en true. En el Lost Focus del textbox, lo haces
activar de nuevo el grid. El textbox al principio está invisible, y cuando el
evento lo haces visible:
Option Explicit
Dim TheCol As MSDBGrid.Column
Private Sub DBGrid1_BeforeColEdit(ByVal ColIndex As Integer, ByVal KeyAscii As
Integer, Cancel As Integer)
If ColIndex = 1 Then
' referenciar columna
Set TheCol = DBGrid1.Columns(ColIndex)
With txtCapturaCampo
' Ajustar posición del textbox para captura
.Top = DBGrid1.Top + DBGrid1.RowTop(DBGrid1.Row)
.Height = DBGrid1.RowHeight
.Left = DBGrid1.Left + TheCol.Left
.Width = TheCol.Width
.Text = TheCol.Text
.SelStart = 0
.SelLength = Len(.Text)
' mostrar y dar foco...
.Visible = True
.SetFocus
End With
End If
End Sub
Private Sub txtCapturaCampo_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 8
Case 48 To 57
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub txtCapturaCampo_LostFocus()
With txtCapturaCampo
TheCol.Text = .Text
DBGrid1.SetFocus
.Visible = False
End With
End Sub
La idea sería algo como eso.
Saludos