Mejora del Msflexgrid Editable

Denis Guido
05 de Febrero del 2004
Bueno Amigos

Esto es una Mejora que le agregue al MsflexGrid, don de ustedes pueden editar sobre este control , como sugerencia les pido que le ponga color de fondo al textbox, ademas la propiedad BorderStyle=0-None

ademas dandole enter pueden avanzar a la siguiente celda, espero le sirva de antemano muchas gracias

Private Sub Form_Load()
txtEditaCelda.Height = msfG.CellHeight
txtEditaCelda.Height = msfG.CellHeight
txtEditaCelda.Width = msfG.CellWidth
txtEditaCelda.Left = msfG.Left + msfG.CellLeft
txtEditaCelda.Top = msfG.Top + msfG.CellTop
txtEditaCelda.Visible = True
txtEditaCelda.Text = msfG.TextMatrix(msfG.RowSel, msfG.ColSel)
txtEditaCelda.SelStart = 0
txtEditaCelda.SelLength = Len(txtEditaCelda.Text)
End Sub
Private Sub msfG_EnterCell()
If msfG.ColWidth(msfG.Col) > 0 And msfG.RowHeight(msfG.Row) > 0 Then ColocaText
End Sub
Private Sub txtEditaCelda_Change()
msfG.Text = txtEditaCelda.Text
End Sub
Private Sub txtEditaCelda_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyUp
Do While msfG.Row > msfG.FixedRows
msfG.Row = msfG.Row - 1
If msfG.RowHeight(msfG.Row) > 0 Then Exit Do
Loop
KeyCode = 0
Case vbKeyDown
Do While msfG.Row < msfG.Rows - 1
msfG.Row = msfG.Row + 1
If msfG.RowHeight(msfG.Row) > 0 Then Exit Do
Loop
KeyCode = 0
Case vbKeyLeft
Do While msfG.Col > msfG.FixedCols
msfG.Col = msfG.Col - 1
If msfG.ColWidth(msfG.Col) > 0 Then Exit Do
Loop
KeyCode = 0
Case vbKeyRight
Do While msfG.Col < msfG.Cols - 1
msfG.Col = msfG.Col + 1
If msfG.ColWidth(msfG.Col) > 0 Then Exit Do
Loop
KeyCode = 0
Case vbKeyTab Or 13
Do While msfG.Col < msfG.Cols - 1
msfG.Col = msfG.Col + 1
If msfG.ColWidth(msfG.Col) > 0 Then Exit Do
Loop
KeyCode = 0

End Select
End Sub
' Coloca el textBox sobre la celda actual
Private Sub ColocaText()
With txtEditaCelda
.Move msfG.CellLeft + msfG.Left, msfG.CellTop + msfG.Top, msfG.CellWidth, msfG.CellHeight
.Visible = True
.ZOrder 0
.Text = msfG.Text
.SetFocus
.SelStart = 0
.SelLength = Len(msfG.Text)
End With
End Sub


Denis Guido
Nicaragua

sdemingo
05 de Febrero del 2004
' Para poder editar sus campos
mfGrid.SelectionMode = flexSelectionFree

' Para seleccionar por fila
mfGrid.SelectionMode = flexSelectionByRow

' Para seleccionar por columna
mfGrid.SelectionMode = flexSelectionByColumn


salu2
sdemingo