- ベストアンサー
MSFlexGridで↑や↓押下時の処理
- VB6.0でのMSFlexGridの「↑」や「↓」押下時の処理方法について教えてください。
- MSFlexGridで行を選択した際に、キーボードの「↑」や「↓」押下時に処理を拾えない場合、keyDownイベントを使用して行のデータをテキストボックスに表示する方法があります。
- よりスマートな方法があれば教えていただきたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
Private Sub MSFlexGrid1_SelChange() Static intNowRow As Integer <----- 静的変数として現行行を記憶する変数を宣言 Dim intNewRow As Integer <----- カーソル移動後の行を格納する変数を宣言 intNewRow = MSFlexGrid1.Row <----- カーソル移動後の行を intNewRow に代入 If intNewRow <> intNowRow Then <----- 記憶している現行行と新しい行の行番号を比較 intNowRow = intNewRow <----- 新しい行の値をを現行行を記憶する intNowRow に代入 MsgBox intNowRow <--------- MsgBox 関数で intNowRow を表示。 End If <----------------------- End If End Sub カーソル移動は上下だけでなく左右もあります。 そのために、カーソルが移動したからと言って新しい行へ移動したかどうかは不明です。 で、上下移動したかどうかを知るには新しい行番号と現行の行番号との比較が必要です。 新しい行番号と現行の行番号ろが異なる限りで<行のデータをテキストボックスへ表示する>を。 そこが MsgBox関数の位置に書くべきコードです。
その他の回答 (2)
補足: RowColChange()も・・・。
>クリックイベントでもフォーカスイベントでも処理を拾えません・・・。 ・クリックしていないので当然です。 ・フォーカスが変化しないので当然です。 Private Sub MSFlexGrid1_SelChange() Static intNowRow As Integer Dim intNewRow As Integer intNewRow = MSFlexGrid1.Row If intNewRow <> intNowRow Then intNowRow = intNewRow MsgBox intNowRow End If End Sub
お礼
ご回答ありがとうございます。 >・クリックしていないので当然です。 >・フォーカスが変化しないので当然です。 やhりそうですよね・・・。 コードを記載していただきありがたいのですが、何のことでしょうか? グリッドにチェンジイベントって感じだと思うのですが、よく分かりません・・・。
お礼
ご丁寧にありがとうございますm(__)m 参考にさせていただき、行いたい処理が実現出来ました! 本当にありがとうございますm(__)m