VB6 Flexgrid Highlighting a row

I use flexgrids alot but I often have trouble keeping the highlight on a selected row.  When I select the row and then set a value of the flexgrid.col to get the data in a cell in the row I have slected, the highlight disappears.

How can I get the data from the cell without unhighlighting the row?
keymacAsked:
Who is Participating?
 
tonym001Commented:
Sorry I sent that before I intended to

If you use the .Textmatrix property of the grid instead of setting the .Row and .Col values you can pick up the data values from the grid without affecting the focus. For instance,

Dim strValue As String
If Grid.RowSel = 0 Then
       'get the value of the first column in the selected row
        strValue = Grid.TextMatrix(Grid.RowSel, 0)
End If
0
 
gpizzutoCommented:
set the selectionmode to column
0
 
gpizzutoCommented:
pardon, to row
0
Ultimate Tool Kit for Technology Solution Provider

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy now.

 
Shanmuga SundaramDirector of Software EngineeringCommented:
flexgrid1.SelectionMode = flexSelectionByRow
0
 
Shanmuga SundaramDirector of Software EngineeringCommented:
check whether this helps

Private Sub MSFlexGrid1_Click()
MSFlexGrid1.SelectionMode = flexSelectionByRow
Dim selectedrow As Integer
selectedrow = MSFlexGrid1.Row
For i = 1 To MSFlexGrid1.Rows - 1
For j = 1 To MSFlexGrid1.Cols - 1
MSFlexGrid1.Row = i
MSFlexGrid1.Col = j
MSFlexGrid1.CellBackColor = vbWhite
Next
Next
MSFlexGrid1.Row = selectedrow
For j = 1 To MSFlexGrid1.Cols - 1
MSFlexGrid1.Col = j
MSFlexGrid1.CellBackColor = vbRed
Next
End Sub
0
 
keymacAuthor Commented:
Yeah I had coded a similar answer, ie setting the backgrounds to white with black foregrounds and setting the selected row backgrounds to blue and foreground to white.  But I hoped that there would be a better way than going through the all the rows in the flexgrid to set the default white background - black foreground..

I also created a procedure in globals module as per
Private sub fgTable_click()
     highlight_selected_row (fgTable, fgTable.row)
end sub
 
 
public sub highlight_selected_row(fg as MSflexgrid, dblRow as double)
    Dim dblX as double
    Dim iY as integer
 
    for dblX = 1 to fg.rows - 1
        fg.row = dblX
        for iY = 1 to fg.cols - 1
            fg.col = iY
            fg.cellbackcolor = vbWhite
            fg.cellforecolor = vbBlack
        next iY
    next dblx
 
    fg.row = dblRow
    for iY = 1 to fg.cols - 1
        fg.col = iY
        fg.cellbackcolor = vbBlue
        fg.cellforecolor = vbWhite
    next iY
end sub

Open in new window

0
 
tonym001Commented:

Private Sub Form_Load()
MSFlexGrid1.SelectionMode = flexSelectionByRow
MSFlexGrid1.HighLight = flexHighlightAlways
End Sub
0
 
keymacAuthor Commented:
Private Sub Form_Load()
MSFlexGrid1.SelectionMode = flexSelectionByRow
MSFlexGrid1.HighLight = flexHighlightAlways
End Sub

This doesn't work once you set the grid column
0
 
tonym001Commented:
Dim strValue As String
    'get the value of the column in the selected row

    strValue = .TextMatrix(.RowSel, 0)
0
 
keymacAuthor Commented:
Excellent just exactly what I wanted
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.