[リストへもどる]
一括表示

投稿時間:2002/12/07(Sat) 23:08
投稿者名:ぼくのタイプ
Eメール:
URL :
タイトル:
MSFlexGridで複数選択
MSFlexGridで複数選択をしたくて以下のものを書きました。
このままでは、マウスクリックを二度行わないと反転表示されません。
一度目のクリックの時に何故反応しないのでしょうか?

'MSFlexGrid1のプロパティ
'アクティブセル=1-Left
'選択モード=1-By Row
Private Sub MSFlexGrid1_Click()
    Label1.Caption = MSFlexGrid1.Col 'test
    If MSFlexGrid1.CellBackColor = vbWhite Then
        Call Change_RowColor(QBColor(15), QBColor(3)) 'ForeColor,BackColor
    Else
        Call Change_RowColor(QBColor(0), QBColor(15))
    End If
End Sub
Private Sub MSFlexGrid1_MouseMove(Button As --中略--, y As Single)
    Dim iNowPos As Integer
    MSFlexGrid1.ColSel = MSFlexGrid1.Cols - 1
    If MSFlexGrid1.MouseRow <> iBeforeMousePos Then
        If MSFlexGrid1.MouseRow = 0 Then
            iNowPos = 1
        Else
            iNowPos = MSFlexGrid1.MouseRow
            MSFlexGrid1.Row = iNowPos
            MSFlexGrid1.Col = 0
            iBeforeMousePos = iNowPos
        End If
    End If
End Sub
Private Sub Change_RowColor(sForeColor As String, sBackColor As String)
    Dim i As Integer
        For i = MSFlexGrid1.FixedCols To MSFlexGrid1.Cols - 1
           MSFlexGrid1.Col = i
           MSFlexGrid1.CellBackColor = sBackColor 'QBColor(15)
           MSFlexGrid1.CellForeColor = sForeColor 'QBColor(0)
        Next i
End Sub

投稿時間:2002/12/08(Sun) 08:23
投稿者名:ぼくのタイプ
Eメール:
URL :
タイトル:
Re: 訂正(MSFlexGridで複数選択)
すみません。vbWhiteは0ではないのですね。

> Private Sub MSFlexGrid1_Click()
>     Label1.Caption = MSFlexGrid1.Col 'test
>     If MSFlexGrid1.CellBackColor = QBColor(0) Then
>         Call Change_RowColor(QBColor(15), QBColor(3)) 'ForeColor,BackColor
>     Else
>         Call Change_RowColor(QBColor(0), QBColor(15))
>     End If
> End Sub

投稿時間:2002/12/08(Sun) 10:47
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^2: 訂正(MSFlexGridで複数選択)
回答ではありません。
修正されるなら、パスワードを使って修正できます。
又、コードを投稿される場合は 図表モード にチェックを入れて投稿して頂くと段落が有効
になり見やすくなります。
今からでも修正できます。

投稿時間:2002/12/08(Sun) 20:55
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: MSFlexGridで複数選択
これでどうですか?

Private Sub MSFlexGrid1_Click()
    Label1.Caption = MSFlexGrid1.Col 'test
    If MSFlexGrid1.CellBackColor = QBColor(15) Or MSFlexGrid1.CellBackColor = 0 Then
        Call Change_RowColor(QBColor(15), QBColor(3)) 'ForeColor,BackColor
    Else
        Call Change_RowColor(QBColor(0), QBColor(15))
    End If
End Sub

# バックカラーは変更できますが [複数選択?]はどうかな?

投稿時間:2002/12/09(Mon) 03:30
投稿者名:ぼくのタイプ
Eメール:
URL :
タイトル:
Re^2: MSFlexGridで複数選択
> これでどうですか?
>
> Private Sub MSFlexGrid1_Click()
>     Label1.Caption = MSFlexGrid1.Col 'test
>     If MSFlexGrid1.CellBackColor = QBColor(15) Or MSFlexGrid1.CellBackColor = 0 Then
>         Call Change_RowColor(QBColor(15), QBColor(3)) 'ForeColor,BackColor
>     Else
>         Call Change_RowColor(QBColor(0), QBColor(15))
>     End If
> End Sub
やはり、CellBackColor はゼロなんですね。
私の失敗は、システムカラーを理解していなかった事と
CellBackColor の値がBackColor と同じものが入ると思い込んでいたためです。
その為に、どう質問を訂正しようか迷っていました。風邪で寝ていたせいもあるけど・・・。

> # バックカラーは変更できますが [複数選択?]はどうかな?
むっ?だって、あれでほとんどOKではないですか?
背景色で選択状態をチェックすれは・・・駄目なの?ですか、と逆に聞かれると困るでしょうが・・。

投稿時間:2002/12/09(Mon) 09:45
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: MSFlexGridで複数選択
> > # バックカラーは変更できますが [複数選択?]はどうかな?
> むっ?だって、あれでほとんどOKではないですか?
> 背景色で選択状態をチェックすれは・・・駄目なの?ですか、と逆に聞かれると困るでしょうが・・。


>MSFlexGridで複数選択をしたくて  >MSFlexGridで複数選択
と書いてあるのに
[背景色で選択状態をチェックすれは] のコード等が見当たらなかったので!

#>むっ? の前に、まずは、回答に対するお礼等を記入するのが礼儀かと!

投稿時間:2002/12/09(Mon) 13:35
投稿者名:ぼくのタイプ
Eメール:
URL :
タイトル:
Re^4: MSFlexGridで複数選択
> >MSFlexGridで複数選択をしたくて  >MSFlexGridで複数選択
> と書いてあるのに
> [背景色で選択状態をチェックすれは] のコード等が見当たらなかったので!
> #>むっ? の前に、まずは、回答に対するお礼等を記入するのが礼儀かと!
うっ!(単に擬音と思って下さい)
非礼をお詫びします。そして、有難うございます。感謝しています。
・・・結局、今日は休んじゃったので、もう少し考えてみます。
ところで、
前述のCellBackColorは何故ゼロを返すのでしょう。
VBではシステムカラーをどの様に扱えば良いのか戸惑っています。