お世話になります。
以下のような4つのコントロール配列を作成し、共通する処理を各コントロール配列ごとにまとめてはあるのですが、
txtTSID().text
txtEMMPID().text
txtEMMBit().text
txtQAMFreq().text
各コントロール配列で同じイベントで同じ処理をしています。
しかし、各コントロール配列毎に対応するイベントの種類が異なります。
(ん〜、うまく文章では説明できません(^^; )
以下の通りとなっておりますが、ご覧の通り、同じような処理がたくさんあります。これらをもっと共通化することはできませんでしょうか?
Private Sub txtTSID_KeyPress(Index As Integer, KeyAscii As Integer)
'/* テキストボックスでEnterを押した後にフォーカスを移す。 */
If KeyAscii = vbKeyReturn Then frmMain.cmdNetSaveFile.SetFocus
End Sub
Private Sub txtEMMPID_KeyPress(Index As Integer, KeyAscii As Integer)
'/* テキストボックスでEnterを押した後にフォーカスを移す。 */
If KeyAscii = vbKeyReturn Then frmMain.cmdNetSaveFile.SetFocus
End Sub
Private Sub txtEMMBit_KeyPress(Index As Integer, KeyAscii As Integer)
'/* テキストボックスでEnterを押した後にフォーカスを移す。 */
If KeyAscii = vbKeyReturn Then cmdNetSaveFile.SetFocus
End Sub
Private Sub txtTSID_GotFocus(Index As Integer)
'/* フォーカスを得たときに全選択状態にする */
txtTSID(Index).SelStart = 0
txtTSID(Index).SelLength = txtTSID(Index).MaxLength
End Sub
Private Sub txtEMMPID_GotFocus(Index As Integer)
'/* フォーカスを得たときに全選択状態にする */
txtEMMPID(Index).SelStart = 0
txtEMMPID(Index).SelLength = txtEMMPID(Index).MaxLength
End Sub
Private Sub txtEMMBit_GotFocus(Index As Integer)
'/* フォーカスを得たときに全選択状態にする */
txtEMMBit(Index).SelStart = 0
txtEMMBit(Index).SelLength = txtEMMBit(Index).MaxLength
End Sub
Private Sub txtQAMFreq_GotFocus(Index As Integer)
'/* フォーカスを得たときに全選択状態にする */
txtQAMFreq(Index).SelStart = 0
txtQAMFreq(Index).SelLength = txtQAMFreq(Index).MaxLength
End Sub
Private Sub txtEMMBit_KeyPress(Index As Integer, KeyAscii As Integer)
'/* テキストボックスでEnterを押した後にフォーカスを移す。 */
If KeyAscii = vbKeyReturn Then cmdNetSaveFile.SetFocus
'/* テキストボックスで"0" 〜 "9"の数字入力以外受け付けない処理(BS、del、Enterは受け付ける) */
If Not IsNumeric(Chr$(KeyAscii)) And KeyAscii <> vbKeyBack And KeyAscii <> vbKeyDelete And KeyAscii <> vbKeyReturn Then
KeyAscii = 0 '/* 文字を取り消し */
Beep '/* エラー音を鳴らす */
End If
End Sub
Private Sub txtQAMFreq_KeyPress(Index As Integer, KeyAscii As Integer)
'/* テキストボックスでEnterを押した後にフォーカスを移す。 */
If KeyAscii = vbKeyReturn Then cmdNetSaveFile.SetFocus
'/* テキストボックスで"0" 〜 "9"の数字入力以外受け付けない処理(BS、del、Enterは受け付ける) */
If Not IsNumeric(Chr$(KeyAscii)) And KeyAscii <> vbKeyBack And KeyAscii <> vbKeyDelete And KeyAscii <> vbKeyReturn Then
KeyAscii = 0 '/* 文字を取り消し */
Beep '/* エラー音を鳴らす */
End If
End Sub
アドバイスをお願い致します。
コントロール配列を使ってる場合はほぼ[VB6.0]と分かるけど、
質問する場合は自分の開発環境を最初に記入してください。
GotFocus の処理はよくあるパターンだね。
[VB6.0]
Option Explicit
Private Sub txtEMMBit_GotFocus(Index As Integer)
'/* フォーカスを得たときに全選択状態にする */
Call txtBox_GotFocus_Common(txtEMMBit(Index))
End Sub
Private Sub txtQAMFreq_GotFocus(Index As Integer)
'/* フォーカスを得たときに全選択状態にする */
Call txtBox_GotFocus_Common(txtQAMFreq(Index))
End Sub
Private Sub txtBox_GotFocus_Common(ByRef TextBoxX As TextBox)
With TextBoxX
.SelStart = 0
' .SelLength = .MaxLength
.SelLength = Len(.Text) '←こっちを書く方が多いと思うけど。
End With
End Sub
…あとは応用してください。
特攻隊長まるるう様
早速のレスありがとうございます。
>質問する場合は自分の開発環境を最初に記入してください。
→ 大変失礼致しました。うっかり忘れてしまっておりました。
以後気を付けます。
本題ですが、アドバイス頂いた通り、やってみましたら全て共通化することができました。
ありがとうございました。
また、何かありましたら宜しくお願い致します。
ツイート | ![]() |