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

投稿時間:2003/07/02(Wed) 19:02
投稿者名:Blues
Eメール:
URL :
タイトル:
MSHFlexGridの固定行座標の取得
いつも勉強させていただいてます。Bluesと申します。
次のとおり、フォーム上にMSHFlexGridを表示させ、
MSHFlexGridのクリックイベントで固定行がクリック
されたら?という条件判断をさせたいのですが、
必ず固定行ではない座標値(1以上)が帰ってきます。
なにがいけないのでしょうか?
固定行部分をクリックした場合にソート処理を是非
行いたいのです。
よろしくお願いいたします。

Private Sub Form_Load()
    dim cm as Integer
    dim rw as Integer

    With MSHFlexGrid1
        .Visible = False
        .Cols = 11
        .Rows = 11
        '固定行・列(タイトル部分)表示 かいし
        .Row = 0    
        For cm = 1 To .Cols - 1
            .Col = cm
            .Text = "Title" + CStr(cm)
        Next cm
        .Col = 0
        For rw = 1 To .Rows - 1
            .Row = rw
            .Text = "Line" + CStr(rw)
        Next rw
        '固定行・列 表示 しゅうりょう
        
        'データ表示
        For rw = 1 To .Rows - 1
            For cm = 1 To .Cols - 1
                .TextMatrix(rw, cm) = rw * cm
            Next cm
        Next rw
        .Visible = True
    End With
End Sub

Private Sub MSHFlexGrid1_Click()
    If MSHFlexGrid1.Row > 0 Then '←必ずここでMSHFlexGrid1.Rowが
        Exit Sub                 '1以上の値を返してしまうのです。(悲)
    End If
    
    MSHFlexGrid1.Sort = 1    '昇順ソート
End Sub

投稿時間:2003/07/02(Wed) 19:18
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: MSHFlexGridの固定行座標の取得

> Private Sub MSHFlexGrid1_Click()
>     If MSHFlexGrid1.Row > 0 Then '←必ずここでMSHFlexGrid1.Rowが
>         Exit Sub                 '1以上の値を返してしまうのです。(悲)
>     End If
>    
>     MSHFlexGrid1.Sort = 1    '昇順ソート
> End Sub


下記ではどうですか?

Private Sub MSHFlexGrid1_Click()
    If MSHFlexGrid1.MouseRow > 0 Then '←必ずここでMSHFlexGrid1.Rowが
        Exit Sub                 '1以上の値を返してしまうのです。(悲)
    End If
   MSHFlexGrid1.Sort = 1   '昇順ソート
End Sub

投稿時間:2003/07/02(Wed) 19:25
投稿者名:Blues
Eメール:
URL :
タイトル:
Re^2: MSHFlexGridの固定行座標の取得
花ちゃんさま、大変すばやいご回答ありがとうございます。

> 下記ではどうですか?
>
> Private Sub MSHFlexGrid1_Click()
>     If MSHFlexGrid1.MouseRow > 0 Then '←必ずここでMSHFlexGrid1.Rowが
>         Exit Sub                 '1以上の値を返してしまうのです。(悲)
>     End If
>    MSHFlexGrid1.Sort = 1   '昇順ソート
> End Sub

残念ながら、MSHFlexGrid1.MouseRow で試したところ、全て10の値を
返してきました。
自分もいろいろチャレンジしておりますが、解決策をご存知の方
ご教授よろしくお願いいたします。

投稿時間:2003/07/02(Wed) 19:38
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: MSHFlexGridの固定行座標の取得
> 残念ながら、MSHFlexGrid1.MouseRow で試したところ、全て10の値を

なにが10なのでしょうか?
投稿されたコードで試しても並び変わりますよ!

Private Sub MSHFlexGrid1_Click()
    If MSHFlexGrid1.MouseRow > 0 Then '←必ずここでMSHFlexGrid1.Rowが
        Exit Sub                 '1以上の値を返してしまうのです。(悲)
    End If
   MsgBox MSHFlexGrid1.MouseRow
End Sub

これでMsgBoxに何が表示されますか?

投稿時間:2003/07/02(Wed) 20:01
投稿者名:Blues
Eメール:
URL :
タイトル:
Re^4: MSHFlexGridの固定行座標の取得
Bluesです。説明不足ですいません。

> なにが10なのでしょうか?
>
> Private Sub MSHFlexGrid1_Click()
>     If MSHFlexGrid1.MouseRow > 0 Then '←必ずここでMSHFlexGrid1.Rowが
>         Exit Sub                 '1以上の値を返してしまうのです。(悲)
>     End If
>    MsgBox MSHFlexGrid1.MouseRow
> End Sub
>
> これでMsgBoxに何が表示されますか?

はい、確かにMsgBoxで0が表示され、条件判断も思い通りに実行されました。
さきほどは、If分にブレークポイントを設定し、マウスでMSHFlexGrid1.MouseRowを
ポイントして全て10が返ってくるのを確認したのですが。。。
はい、とりあえずできたことには本当にありがとうございます。
さきほど、自分がIf MSHFlexGrid1.MouseRow > 0 Thenとコーディングし
正常に動作しなかったのは「幻」を見たのでしょうか?
花さまのご提示どおりにコーディングしたのですが、はて?
これからデバッグをし、また不具合がでて自分でどうしようもなくなった際には
また質問するかも知れませんが、そのときはどうぞよろしくお願いいたします。
ありがとうございました。