Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Ayuda Con Flexgrid

Estas en el tema de Ayuda Con Flexgrid en el foro de Visual Basic clásico en Foros del Web. Hola amigos soy nuevo en esto y apenas acabo de empezar a usar el flexgrid pero tengo un proble alguien podria ayudarme o aorientarme acerca ...
  #1 (permalink)  
Antiguo 01/02/2008, 12:09
 
Fecha de Ingreso: enero-2008
Mensajes: 181
Antigüedad: 16 años, 3 meses
Puntos: 1
Busqueda Ayuda Con Flexgrid

Hola amigos soy nuevo en esto y apenas acabo de empezar a usar el flexgrid pero tengo un proble alguien podria ayudarme o aorientarme acerca de como le pedo hacer para hacerle modificaciones de datos al flex y como puedo hacer para imprimir dichos datos??

ojala puedan ayudarme gracias.... saludos!!!!
  #2 (permalink)  
Antiguo 01/02/2008, 14:45
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 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.
  #3 (permalink)  
Antiguo 01/02/2008, 15:26
 
Fecha de Ingreso: enero-2008
Mensajes: 181
Antigüedad: 16 años, 3 meses
Puntos: 1
De acuerdo Re: Ayuda Con Flexgrid

Cita:
Iniciado por Avellaneda Ver Mensaje
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.



Muchas gracias avellaneda, disculpa la molestia pero el codigo de modificar el flexgrid funciona perfectamente pero la cosa es que con ese codigo no me guarda los cambios que hice en el grid en mi base de datos como le puedo hacer, ademas el codigo de imprimir donde pueso conseguir mas imformacion del mismo ya que quiero imprimir un form que contiene el flexgrid pero tambien tiene texts e imagenes y todo lo quiero imprimir en una hoja como le puedo hacer o donde me informo de todo esto... te lo agradeceria muchisimo o alguien pudiese ayudarme!!!!
gracias.... saludos
  #4 (permalink)  
Antiguo 02/02/2008, 03:28
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: Ayuda Con Flexgrid

Es que el control MSFlexGrid no es un control enlazado a datos, para eso es mejor utilizar un control DataGrid que guarda automáticamente las modificaciones.

Con el MSFlexGrid lo podrías hacer comparando cada celda del grid con los registros de la tabla, pero lo veo muy laborioso.

Para imprimir el formulario, tal y como se ve en pantalla, sólo tienes que utilizar el método PrintForm:

Me.PrintForm
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 18:27.