Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/02/2008, 14:45
Avellaneda
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 17 años, 3 meses
Puntos: 37
Re: Ayuda Con Flexgrid

Para escribir en el FlexGrid hay varios métodos, uno podría ser este utilizando los eventos KeyPress y KeyDown del Grid:


Código:
Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
' solo caracteres imprimibles
If KeyAscii >= 32 And KeyAscii <= 127 Then MSFlexGrid1.Text = MSFlexGrid1.Text & Chr(KeyAscii)
End Sub

Private Sub MSFlexGrid1_KeyDown(KeyCode As Integer, Shift As Integer)
With MSFlexGrid1
    Select Case KeyCode
    Case vbKeyDelete    ' Tecla <Supr> borramos toda la celda
        .Text = ""
   Case vbKeyBack      ' Tecla < Retroceso> borramos el último caracter
        If Len(.Text) > 0 Then .Text = Left(.Text, Len(.Text) - 1)
    Case vbKeyTab, vbKeyReturn ' Teclas <Tab> o <Intro>
        If .Col = .Cols - 1 Then  ' si es la última columna:
            ' si además en la última fila, añadimos una nueva
            If .Row = .Rows - 1 Then .Rows = .Rows + 1
            ' nos posicionamos en la primera celda de la fila siguiente
            .Row = .Row + 1
            .Col = .FixedCols
            .LeftCol = .FixedCols
        Else    ' si no, pasamos a la siguiente columna de la misma fila
            .Col = .Col + 1
        End If
    End Select
End With
End Sub
y para imprimirlo, básicamente sería así:

Código:
Private Sub cmdImprimir_Click()
Dim iFila, iCol As Integer
For iFila = 1 To MSFlexGrid1.Rows - 1
    For iCol = 1 To MSFlexGrid1.Cols - 1
        Printer.Print MSFlexGrid1.TextMatrix(iFila, iCol) & Space(5);
    Next iCol
    ' nueva línea
    Printer.Print ""
Next iFila
Printer.EndDoc
End Sub
Esto se puede mejorar bastante, sólo puse lo básico.

Espero que te sea de ayuda.