• Viernes 8 de Noviembre de 2024, 19:20

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - wilderpaucar

Páginas: [1]
1
soy usuario nuevo en este blog, el problema es cuando se añade filas a un mshflexgrid y luego se elimina alguna(s) fila con el mshflexgrid1.removeitem. Bueno la primera ves que se usa funciona bien pero si uno sigue borrando y añadiendo, las filas ya no se muestran o sea no se ven pero existen. Este problema es un dolor de cabeza para los que han chocado con ello.
He creado un código que borre las filas sin usar el romoveitem y asi no tener probleas al añadir nuevas filas. Ahi los dejo, espero que les sirva.

con este código eliminas 1 o varias filas que selecciones del mshflexgrid

 
 
Private Sub Command1_Click()
Call Eliminar_Flex(Me.MSHFlexGrid1)
End Sub

Sub Eliminar_Flex(FlexEliminar As MSHFlexGrid)
Dim i, J, NunfIL, FilasBorradas As Integer
On Error Resume Next
NunfIL = 0
With FlexEliminar
If .Row <= .RowSel Then
                For i = .Row To .Rows - 2
                NunfIL = NunfIL + 1
                For J = 0 To .Cols - 1
               Select Case .RowSel + NunfIL
                Case Is <= .Rows - 1
                .TextMatrix(i, J) = .TextMatrix(.RowSel + NunfIL, J)
                .TextMatrix(.RowSel + NunfIL, J) = ""
                Case Is > .Rows - 1
                .TextMatrix(i, J) = .TextMatrix(.Rows - 1, J)
                End Select
                Next
                Next
 Else
                For i = .RowSel To .Rows - 2
                NunfIL = NunfIL + 1
                For J = 0 To .Cols - 1
               Select Case .Row + NunfIL
                Case Is <= .Rows - 1
                .TextMatrix(i, J) = .TextMatrix(.Row + NunfIL, J)
                .TextMatrix(.Row + NunfIL, J) = ""
                Case Is > .Rows - 1
                .TextMatrix(i, J) = .TextMatrix(.Rows - 1, J)
                End Select
                Next
                Next
End If
FilasBorradas = Abs(.RowSel - .Row) + 1
.Rows = .Rows - FilasBorradas
End With
End Sub
 
 
 
Ahoroa si sólo quieres eliminar los datos y no modificar el número de filas, corriendo los demas datos que no hayas seleccionado a las filas en blanco que borraste, solo borra esto del codigo anterior:

FilasBorradas = Abs(.RowSel - .Row) + 1
.Rows = .Rows - FilasBorradas

Páginas: [1]