C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)

全ての寸法に番号バルーンを付ける6

こちらの続きです。
全ての寸法に番号バルーンを付ける5 - C#ATIA
もう、十分な牛歩戦術


作成するバルーンの先頭番号を入力させますが、当然
自然数でなければNGの為、該当しない入力時は赤文字に切り替え
OKボタンはグレーアウトにする ぐらいの実装は、
UI嫌いな僕でも行う必要性は感じています。

Form側のCodeです。
先頭番号のテキストボックスはMe.StartNumberで
OKボタンはMe.OkButtonです。

Private Sub StartNumber_Change()

    Dim startNumberBox As TextBox
    Set startNumberBox = Me.StartNumber
    
    If is_natural_number(startNumberBox.text) Then
        'ok
        startNumberBox.ForeColor = &H80000008
        Me.OkButton.Enabled = True
    Else
        'ng
        startNumberBox.ForeColor = &HFF
        Me.OkButton.Enabled = False
    End If

End Sub

'有効な番号か?
Private Function is_natural_number( _
    ByVal txt As String) _
    As Boolean

    is_natural_number = False

    If Len(txt) < 1 Then
        Exit Function
    End If

    If Not IsNumeric(txt) Then
        Exit Function
    End If

    Dim num As Long
    
    On Error Resume Next
    
    If CLng(txt) <> CDbl(txt) Then
        Exit Function
    End If

    On Error GoTo 0

    is_natural_number = True

End Function

ん~考えたらVBAのフォームは殆どやったことが無いです。
テキストボックスのChangeイベントを利用していますが、
違和感が・・・。

用語がFusion360API的になってしまい申し訳ないのですが、
特定のコントロールのイベントを作成する事が出来るは
凄く有難いのですが、イベントハンドラー内で
"どのコントロールからイベントが発生したのか?"
の取得方法が分かりませんでした。(検索していないです)

"Me" だとフォーム全体になるので、そこから該当する
コントロールを探し出す必要が有るんですよね。
イベントを発生させたコントロールが必要になる場面て、
無いのかな?何となく有りそうな気もするんだけど。



バルーンを事前にチェックして、見つかった番号の最大+1を
入力デフォルトに設定する親心も実装。
あっこのままだとダブりも出ちゃうな。完成が遠い・・・。