tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルMSFlexGridのFixedColについて
記事No12159
投稿日: 2008/05/01(Thu) 09:19
投稿者さんた
こんにちは。

MSFlexGridの固定行をクリックした時の動作で何とかならないかと思っています。
MSFlexGridの固定行をクリックした時、その行全体が選択された状態となるのですが、
これを他行と同じようにそのセルだけにフォーカスが当たらないようにできないでしょうか?

したいことは固定行が選択されたら、一覧のソート。他データセルでは内容変更(実装済)。
その為、固定行で全体が選択された状態となってるため、フォーカスが最下行になってし
まい、内容変更が実行されてしまいます。

このような事象の対処法がありましたら、よろしくお願いします。

[ツリー表示へ]
タイトルRe: MSFlexGridのFixedColについて
記事No12164
投稿日: 2008/05/01(Thu) 10:12
投稿者nobu
> したいことは固定行が選択されたら、一覧のソート。他データセルでは内容変更(実装済)。
> その為、固定行で全体が選択された状態となってるため、フォーカスが最下行になってし
> まい、内容変更が実行されてしまいます。

クリックされたColがどこかを判断して処理を制御したらどうでしょうか?

Private Sub MSFlexGrid1_Click()

'マウスのシングルクリック時

Dim Co As Long
Dim Ro As Long

'固定行が1行のみの時で

  With MSFlexGrid1
     Co = .MouseCol
     Ro = .MouseRow
     If Co = 0 Then       '固定行がクリックされた時  
              '処理を書く
     ElseIf Co > 0 Then    '固定行以外の行がクリックされた時
              '処理を書く
     End If
  End With

End Sub


Private Sub MSFlexGrid1_DblClick()

'マウスのダブルクリック時

End Sub

質問の前にMSDNライブラリ(HELP)で各コントロールの
イベントやメソッドを調べて見ると良いかと思います。

[ツリー表示へ]
タイトルRe^2: MSFlexGridのFixedColについて
記事No12166
投稿日: 2008/05/01(Thu) 11:09
投稿者さんた
nobuさん、ありがとうございます。
これが実現できないのです・・。

今のソースですが。
Private Sub MSFlexGrid1_Click()
    With MSFlexGrid1
    '一列目のクリックは抜ける
        If .ColSel <> 0 Then
           Exit Sub
        End If

        .Col = 0
        .Row = .RowSel
        If Trim(.Text) = "" Then
            .Text = "クリックしました"
        End If
    End With
End Sub

問題は固定行をクリックした時の列全体を選択状態にしてしまうせいでしょうか?
.Rowsel=0は絶対取れないような気がしています。

FixColを指定しなければもちろん取れますが、一覧で下にスクロールすると当然
見えなくなってしまう為、Fixcolは使いたいのですが・・。

[ツリー表示へ]
タイトルRe^3: MSFlexGridのFixedColについて
記事No12168
投稿日: 2008/05/01(Thu) 11:44
投稿者リル
MSFlexGrid1.MouseCol、MSFlexGrid1.MouseRowを試してみてください。

行全体の選択をしないようにするには、AllowBigSelectionプロパティです。

[ツリー表示へ]
タイトル解決!
記事No12173
投稿日: 2008/05/01(Thu) 12:39
投稿者さんた
リルさん、ありがとうございます。

おっしゃるようにやってみた所、できました。
Mouse_Downのイベントを追加するとMouse_Clickのイベントが無視されてしまう
ようなので、処理は全てMouse_Downに移動しました。

また、ブレークポイントを入れるとマウスポインタが利いてる分、
違う値になってしまうんですね。
最初は「ん?」と思いましたが、
デバッグの無い環境ではそんな事は起こらないので、OKかなと思いました。

また、AllowBigSelectionプロパティありがとうございます。
おっしゃるとおりでした。

> MSFlexGrid1.MouseCol、MSFlexGrid1.MouseRowを試してみてください。
>
> 行全体の選択をしないようにするには、AllowBigSelectionプロパティです。

[ツリー表示へ]
タイトルRe^3: MSFlexGridのFixedColについて
記事No12169
投稿日: 2008/05/01(Thu) 11:55
投稿者nobu
削除

[ツリー表示へ]
タイトルRe^4: MSFlexGridのFixedColについて
記事No12170
投稿日: 2008/05/01(Thu) 12:00
投稿者nobu
削除

[ツリー表示へ]