1
« en: Jueves 24 de Septiembre de 2009, 05:55 »
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