• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MSFlexGridで↑や↓押下時の処理)

MSFlexGridで↑や↓押下時の処理

このQ&Aのポイント
  • VB6.0でのMSFlexGridの「↑」や「↓」押下時の処理方法について教えてください。
  • MSFlexGridで行を選択した際に、キーボードの「↑」や「↓」押下時に処理を拾えない場合、keyDownイベントを使用して行のデータをテキストボックスに表示する方法があります。
  • よりスマートな方法があれば教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
noname#140971
noname#140971
回答No.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関数の位置に書くべきコードです。

ya-cha
質問者

お礼

ご丁寧にありがとうございますm(__)m 参考にさせていただき、行いたい処理が実現出来ました! 本当にありがとうございますm(__)m

その他の回答 (2)

noname#140971
noname#140971
回答No.2

補足: RowColChange()も・・・。

noname#140971
noname#140971
回答No.1

>クリックイベントでもフォーカスイベントでも処理を拾えません・・・。 ・クリックしていないので当然です。 ・フォーカスが変化しないので当然です。 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

ya-cha
質問者

お礼

ご回答ありがとうございます。 >・クリックしていないので当然です。 >・フォーカスが変化しないので当然です。 やhりそうですよね・・・。 コードを記載していただきありがたいのですが、何のことでしょうか? グリッドにチェンジイベントって感じだと思うのですが、よく分かりません・・・。

関連するQ&A