Multiples selecciòn con MSFlexGrid
Hola!! Quisiera saber si con un MSFlexGrid puedo tener alguna manera de saber que filas han sido seleccionadas con enter, shift + enter o control + enter, etc. Gracias de antemano.
Usa las propiedades .ROWSEl y .COLSEL en conjunto con .ROW y .COL para que sepas si hay mas de una celda seleccionada....
Debes verificar cual de las dos es menor (.ROW vs .ROWSEL asi como .COL vs .COLSEL) ya que el usuario puede seleccionar desde la posicion actual del cursor hacia adelante o hacia atras...
Despues, con un FOR..NEXT puedes ir procesando cada una de las celdas en el rango seleccionado ...
Ejemplo:
Dim nRowMin as Long
Dim nRowMax as Long
Dim nColMin as Long
Dim nColMax as Long
Dim nRow As Long
Dim nCol As Long
If MSFlexGrid1.Row <= MSFlexGrid1.RowSel Then
nRowMin = MSFlexGrid1.Row
nRowMax = MSFlexGrid1.RowSel
Else
nRowMin = MSFlexGrid1.RowSel
nRowMax = MSFlexGrid1.Row
End If
If MSFlexGrid1.Col <= MSFlexGrid1.ColSel Then
nColMin = MSFlexGrid1.Col
nColMax = MSFlexGrid1.ColSel
Else
nColMin = MSFlexGrid1.ColSel
nColMax = MSFlexGrid1.Col
End If
FOR nRow = nRowMin TO nRowMax
FOR nCol = nColMin TO nColMax
MSGBOX "Celda(" & nRow & "/" & nCol & ") = " & _
MSFlexGrid1.TextMatrix(nRow,nCol)
NEXT
NEXT
' ...
Debes verificar cual de las dos es menor (.ROW vs .ROWSEL asi como .COL vs .COLSEL) ya que el usuario puede seleccionar desde la posicion actual del cursor hacia adelante o hacia atras...
Despues, con un FOR..NEXT puedes ir procesando cada una de las celdas en el rango seleccionado ...
Ejemplo:
Dim nRowMin as Long
Dim nRowMax as Long
Dim nColMin as Long
Dim nColMax as Long
Dim nRow As Long
Dim nCol As Long
If MSFlexGrid1.Row <= MSFlexGrid1.RowSel Then
nRowMin = MSFlexGrid1.Row
nRowMax = MSFlexGrid1.RowSel
Else
nRowMin = MSFlexGrid1.RowSel
nRowMax = MSFlexGrid1.Row
End If
If MSFlexGrid1.Col <= MSFlexGrid1.ColSel Then
nColMin = MSFlexGrid1.Col
nColMax = MSFlexGrid1.ColSel
Else
nColMin = MSFlexGrid1.ColSel
nColMax = MSFlexGrid1.Col
End If
FOR nRow = nRowMin TO nRowMax
FOR nCol = nColMin TO nColMax
MSGBOX "Celda(" & nRow & "/" & nCol & ") = " & _
MSFlexGrid1.TextMatrix(nRow,nCol)
NEXT
NEXT
' ...
Gracias semper, pero esto me funciona si las filas han sido seleccionadas de manera continua, pero que pasa tendras idea de como puedo hacer si las filas se han seleccionado de forma aleatoria, se que con otro control podrìa usar la propiedad SelectItem(index) y esto me lo indicarìa pero el MSFlexGrid no tiene esta propiedad ni ninguna parecida.
