Programación General > Visual Basic 6.0 e inferiores

 Otra Vez El Mshflexgrid

<< < (2/2)

desarrollo:
probe kitandole las lineas k me indicaste si hago eso ya no avanza se keda ahi y chanca lo primero

muchas gracias de todoas maneras  :hola:

fap1603:
Hola, para desactivar el boton que deseas puedes hacer una comparacion simple, de si esta vacio o no, y segun eso, lo inhabilitas, ahora para hacer la comprobacion, debes crear una pequeña funcion, a la cual llamas cada vez que la necesites, por ejemplo, mshflexgrid_lostfocus, o la que te interese, cuando pierde el enfoque, cuando haces click, etc.

Ahora, lo de que te agrege una linea al final, eso es por que el mshflexgrid, asigna un valor 0 a la primera fila y primera columna, como si fuera el excel, entonces cuando tu intentas trabajarla, la forma de contar cambia, y el cero se vueleve uno, por ejemplo, si le dices que tenga 2 filas, una es el titulo, y la otra donde pones el dato, pero a la hora de asignar el valor la supuesta fila 1 es = a cero, y la fila 2 es = a uno, eso es algo que debes controlar, es decir debes diferenciar entre dimensionar y asignar un valor, lo que yo hago es al terminar el proceso ,e quito la fila. Mira, yo utilizo mucho el mshflexgrid, si te apetece, escribeme a fap1603@hotmail.com, o agregame y te doy una mano en todo lo que pueda.

Sagutxo:
Salu2. akí te dejo tu codigo como pienso que debería estar.

Private Sub Command2_Click()
Command3.Enabled = True
item = item + 1
MSHFlexGrid1.Rows = MSHFlexGrid1.Rows + 1
MSHFlexGrid1.Row = MSHFlexGrid1.Rows - 1

' ESTAS LINEAS SOLO LAS PONDRIA CADA VEZ QUE REINICIE EL MSFLEXGRID
MSHFlexGrid1.TextMatrix(0, 0) = "ITEM"
MSHFlexGrid1.ColWidth(0) = 1000
MSHFlexGrid1.TextMatrix(0, 1) = "CODIGO DE CONTROL DE CALIDAD"
MSHFlexGrid1.ColWidth(1) = 4000
'------------------------------------------------------
' la linea de abajo la configuraría en las propiedades del msflexgrid pero eso a tu gusto
MSHFlexGrid1.FixedRows = 1
'-------------------------------------------------------

'MSHFlexGrid1.Col = 0 ESTO SOBRA
'MSHFlexGrid1.Row = item ESTO SOBRA
MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row,0) = Str(item)

'MSHFlexGrid1.Col = 1 ESTO SOBRA
'MSHFlexGrid1.Row = item ESTO SOBRA
MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row,1) = DataCombo3.Text

End Sub

Espero haberme explicado, ayer estaba cansado y me costaba pensar :).

desarrollo:
Gracias Chicos ha sido de mucha utilidad para mi sus consejos gracias que tengan un Excelente Año Nuevo  Diviertanse!!!!!  :rolleyes:

wilderpaucar:
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

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa