フォームには4つのMSFlexGridがあります。
上のグリッドには動的データが含まれており、時々更新されます。ユーザーは、他の3つのグリッドのセルにデータを入力できます。
トップグリッドを埋めるために使用されるデータは、Winsockコントロールを介して受信され、処理されてから、次を使用して適切なセルに書き込まれます。.TextMatrix(intRow, intCol) = strData
これは正常に機能します。データは完璧に更新され、ユーザーは他の3つのグリッドに問題なくデータを入力できます。
トップグリッドの一部のセルの背景色を変更したい場合に問題が発生します。まれに、受信したデータが非常に重要であり、対応するセルの背景色が変わる必要があります。
次のコードでセルの色を変更します。
With grd
For lngRow = 1 To .Rows - 1
'default background color
lngBack = vbWhite
'check for important values
If Val(.TextMatrix(lngRow, 1)) >= lngMax Then
'important color
lngBack = &H3040FF
End If
'select whole row
.Row = lngRow
.Col = 0
.RowSel = lngRow
.ColSel = .Cols - 1
'set the background color of the selected row
.CellBackColor = lngBack
Next lngRow
End With 'grd
これに伴う問題は、ユーザーが他の3つのグリッドにデータを入力しているときに、一番上のグリッドの行の背景色が変更されると、フォーカスが一番上のグリッドに移動し、ユーザーが自分のデータを新たに入力する必要があることです。彼が働いていたグリッドで。
フォーカスをそのグリッドに移動せずに、MSFlexGridのセルまたは行全体の背景色を変更することは可能ですか?