2024年のうちにやっておきたいこと、ここで宣言しませんか?

VB2005環境にてFlexGridを使用しています。

ある列のセルの値が1になったら、その行の背景色を灰色にしたいと
思っているのですが、その方法についてご教授ください。

おそらくは値が変わった時に何かイベントを取得できると思うので、
その時に例えば左から2列めの該当セルが1にされたら、色を変える…
というような考え方で良いでしょうか?
ただ、それを実現するためのイベントが何か、また、行の値を
変える方法がわからず困っています。
(ROWプロパティでしょうか?)

申し訳ないのですが、サンプルコードを交えて教えていただけ
ないでしょうか?
よろしくお願いします。

A 回答 (1件)

VB6の頃の FlexGridってことでしょうか?


セルのデータを変更しても それを検知できるイベントはありません
やるとすればEnterイベント(VB6風ならGotfocusイベント)やLeaveCellイベントで
カレントセルの列番号、値を調べて条件に一致したならCellBackColorで色を変更といった具合でしょう
LeaveCellイベントでやる場合は 再帰を不可にする工夫が必要です

  dim n as integer
' 元に戻すための色を設定
  dim cl as Drawing.Color = axMSFlexGrid1.BackColor
  if axMSFlexGrid1.Text = "1" then
    ' 希望の色に変更してください
    cl = Color.Red
  end if
  ' 左から2番目の列がカレントセルなら
  ' FixedColsを考慮したほうがいいでしょう
  if axMSFlexGrid1.Col = 1 then
    ' 行の先頭から末尾までセルの背景色を変更
    for n = axMSFlexGrid1.FixedCols to axMSFlexGrid1.Cols-1
      axMSFlexGrid1.CellBackColor = cl
    next
    ' 元選択されていた列に戻す
    axMSFlexGrid1.Col = 1
  end if

といった具合でしょう ...

行番号は Rowプロパティで取得できますよ
    • good
    • 0
この回答へのお礼

詳しいVerを書き忘れていました。
Flex Grid For.NET 3.0Jです。

しかし、redfox63さんの提示してくれたコードを参考に、
目的の動作を実現することができました。
ありがとうございました。

お礼日時:2007/08/05 09:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A