お知恵をお借りしたく投稿いたします。
Win2000時代に開発したVB6パッケージがあり、そのまま使い回しております。
今回これを客先手配の2008Server64bitにて動かすことになり
動作検証を行っているのですが、
入力欄Enter⇒次入力欄Focus、Focusされた入力欄は全選択状態
というカーソル制御がうまくいかなくなりました。
抜粋プログラムを作成し調査した結果、
SendKeysの追加パラメータ wait=True が有効でなく、
waitがかからないまま次の処理が先に実行されてしまっているようです。
抜粋:InTxtCode でEnter押下で InTxtName にFocus
Focus前にLeftキーを送ることで全選択された可能性を除外する
Private Sub InTxtCode_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
'Leftを送って全選択クリア
SendKeys "{LEFT}", True
'次入力欄へFocus
InTxtName.SetFocus
End If
End Sub
※InTxtNameはGotFocus時にSelStart=0、SelLength=Len(InTxtName)にて全選択させている
予期した動き(既存の動き):InTxtCodeにてEnter押下でInTxtNameに遷移、
InTxtNameが全選択状態
2008Server64Bit:InTxtCodeにてEnter押下でInTxtNameに遷移、
InTxtNameの内容の最後から1文字目にカーソル
試しに『"{LEFT}", True』 を 『"{LEFT3}", True 』とすると
3文字分左にカーソルが寄った状態でInTxtNameにFocusします。
動かす方法、もしくは動かないことが明記されたドキュメントなど
御存じの方おられませんでしょうか?
ご助力の程、よろしくお願いいたします。
該当ロジックを削除することで
実機にて思った通りの動き(遷移後に全選択)できるようになりました。
他部署への説明等も不要だったため、本件は閉じたいと思います。
お調べいただいた方おられましたら
お時間とらせてしまいすいませんでした。
何かありましたらまたよろしくお願いいたします。
ツイート | ![]() |