フィールドコントロール

  処理区分



「処理区分」は、1,2,9 しか入力できないので入力時に数値のみ受け付けるようにコントロールする
桁数も1桁しか入力できないので、「MaxLength プロパティ」を1に設定する

  
Dim gstrFieldData As String

' ****************************************************
' 実行時、最初に処理されるイベント
' ****************************************************
Private Sub Form_Load()

    Call BodyProtect
    Call InitControl

End Sub

' ****************************************************
' 入力コントロール初期設定
' ****************************************************
Private Function InitControl()

    With txt処理区分
        .MaxLength = 1
    End With

End Function

' ****************************************************
' 処理区分を入力時の初期値を保存
' ****************************************************
Private Sub txt処理区分_GotFocus()

    gstrFieldData = txt処理区分.Text

End Sub

' ****************************************************
' キーボードから直接数値以外入力できないようにする
' ****************************************************
Private Sub txt処理区分_KeyPress(KeyAscii As Integer)

    If Not IsNumeric(Chr(KeyAscii)) _
        And KeyAscii <> vbKeyBack then
        KeyAscii = 0
    End If

End Sub

' ****************************************************
' 処理区分に数値以外を入力できないようにする
' ****************************************************
Private Sub txt処理区分_Change()

    Dim strWork As String

    strWork = txt処理区分.Text

' FEP から全角を入力時
    If LenB(StrConv(strWork, vbFromUnicode)) <> Len(strWork) Then
        txt処理区分.Text = gstrFieldData
        Exit Sub
    End If
    
' FEP から半角を入力時、但し未入力状態はOK
    If Not IsNumeric(txt処理区分.Text) And txt処理区分.Text <> "" Then
        txt処理区分.Text = gstrFieldData
        Exit Sub
    End If
        
    gstrFieldData = txt処理区分.Text

End Sub

  

  コードを前ゼロ編集する



  
Dim gstrFieldData As String
Dim gbFieldChange As Boolean

' ****************************************************
' 入力コントロール初期設定
' ****************************************************
Private Function InitControl()

    With txt処理区分
        .MaxLength = 1
    End With
    
    With txtコード
        .MaxLength = 4
    End With

End Function

' ****************************************************
' 処理区分を入力時の初期値を保存
' ****************************************************
Private Sub txtコード_GotFocus()

    gstrFieldData = txtコード.Text
    gbFieldChange = False

End Sub

' ****************************************************
' キーボードから直接数値以外入力できないようにする
' ****************************************************
Private Sub txtコード_KeyPress(KeyAscii As Integer)

    If Not IsNumeric(Chr(KeyAscii)) _
        And KeyAscii <> vbKeyBack then
        KeyAscii = 0
    End If

End Sub

' ****************************************************
' 処理区分に数値以外を入力できないようにする
' ****************************************************
Private Sub txtコード_Change()

    Dim strWork As String

    strWork = txtコード.Text

' FEP から全角を入力時
    If LenB(StrConv(strWork, vbFromUnicode)) <> Len(strWork) Then
        txtコード.Text = gstrFieldData
        Exit Sub
    End If
    
' FEP から半角を入力時、但し未入力状態はOK
    If Not IsNumeric(txt処理区分.Text) And txt処理区分.Text <> "" Then
        txtコード.Text = gstrFieldData
        Exit Sub
    End If
        
    gstrFieldData = txtコード.Text
    gbFieldChange = True

End Sub

' ****************************************************
' コードを前ゼロ編集する
' ****************************************************
Private Sub txtコード_Validate(Cancel As Boolean)

    If gbFieldChange Then
        txtコード.Text = Format(Val(txtコード.Text), "0000")
    End If

End Sub

  

  TAB キーのかわりに ENTER キーを使えるようにする

  
VOID keybd_event(
  BYTE bVk, // virtual-key code
  BYTE bScan, // hardware scan code
  DWORD dwFlags, // flags specifying various function options
  DWORD dwExtraInfo // additional data associated with keystroke
);

  

キーストロークを合成します。システムは、合成されたキーストロークから、WM_KEYUP やWM_KEYDOWN
メッセージを生成します。キーボードドライバの割込みハンドラは、この関数を呼び出しています

  • bVk : 仮想キーコードを指定します。1 以上 254 以下でなければなりません
  • bScan : キーのハードウェアスキャンコードを指定します
  • dwFlags : 関数の動作を指定します。次のフラグを任意に組合わせて指定します

    1. KEYEVENTF_EXTENDEDKEY : スキャンコードにプリフィックスバイト 0xE0 を付加します。
    2. KEYEVENTF_KEYUP : キーを離す操作にします。指定しなければ、キーを押す操作になります

  • dwExtraInfo : キーストロークに関連した 32 ビットの追加情報を指定します


  • 標準モジュール
      
    Public Declare Sub keybd_event Lib "user32" _
    (ByVal bVk As Byte, _
    ByVal bScan As Byte, _
    ByVal dwFlags As Long, _
    ByVal dwExtraInfo As Long)
    Public Const VK_TAB = &H9
    Public Const KEYEVENTF_EXTENDEDKEY = &H1
    Public Const KEYEVENTF_KEYUP = &H2
    
    
      

      
    ' ****************************************************
    ' 実行時、最初に処理されるイベント
    ' ****************************************************
    Private Sub Form_Load()
    
        Call BodyProtect
        Call InitControl
    
    ' フォームがキーコードを常に受け取る設定
        Me.KeyPreview = True
    
    End Sub
    
    ' ************************************************************
    ' Enter -> Tab
    ' ************************************************************
    Private Sub Form_KeyPress(KeyAscii As Integer)
        
        If KeyAscii = vbKeyReturn Then
                  Call keybd_event(VK_TAB, 0, 0, 0)
                  Call keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, 0)
        End If
    
    End Sub
    
    
      












       SQLの窓    create:2002/08/21  update:2014/09/07   管理者用(要ログイン)





    フリーフォントWEBサービス

    SQLの窓WEBサービス

    SQLの窓フリーソフト

    写真素材

    一般WEBツールリンク

    SQLの窓

    フリーソフト

    JSライブラリ