Multiples selecci˛n con MSFlexGrid

Raiza
23 de Septiembre del 2004
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.

semper
23 de Septiembre del 2004
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

' ...

Raiza
23 de Septiembre del 2004
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.