Programación General > Visual Basic 6.0 e inferiores
Otra Vez El Mshflexgrid
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
[*] Página Anterior
Ir a la versión completa