dlGetEventBuf


説明

ダイアログのイベントバッファからイベントを1個取り出します。dlWaitEventメソッドと違い、他の処理と平行してイベント処理を行うことが出来ます。

 

書式

Object.dlGetEventBuf(CtrlName,[CtrlValue],[CtrlListIndex])

引数 説明
CtrlName イベントが発生したコントロールの名前が返ります。
CtrlValue イベントが発生したコントロールの値が返ります
テキストボックス・コンボボックスの場合はテキストボックス部の内容が返ります。
ラジオボタンの場合はON/OFF状態がTrue/Falseで返ります。
チェックボックスの場合はチェック有無が1/0で返ります。
リストボックス・ドロップダウンリストの場合は選択されているリスト項目値が返ります。
CtrlListIndex イベントが発生したリストボックス・ドロップダウンリスト・コンボボックスのリスト項目番号が返ります

 

戻り値

戻り値 説明
True イベントの取り出しに成功しました。
False イベントバッファは空です。

 

使用例(VBScript)

下記はダイアログをモードレス風に使用するサンプルです。プログラムを実行すると直線を1000本引き始めますが、ダイアログの「中断」ボタンでいつでも中断させることが出来ます。

Dim Acad   'Acad変数はErサブルーチンでも使うのでここで宣言
Call Main 'Mainサブルーチンコール

Sub Main()
    'AcadRemoconオブジェクト作成
    Set Acad = CreateObject("AcadRemocon.Body")

    'バージョンチェック
    If Not Acad.CheckVersion("214") Then Exit Sub

    'ダイアログ作成&表示
    DialogCreate

    'UNDO記録開始
    If Not Acad.acPostCommand("UNDO BE ") Then Er: Exit Sub

    '描画&イベント監視ループ
    Acad.dlEventBufStart = True 'イベントバッファ開始
    For i=1 To 1000
        If Not Acad.acPostCommand("LINE " & Acad.PT(i,0) & Acad.PT(i,1000) & " ") Then Er:Exit Sub
        Acad.dlSetProperty "lblInfo","TEXT",i & "本目です..."
        If Acad.dlGetEventBuf(CtrlName, CtrlValue, CtrlListIndex) Then
            If CtrlName="cmdCancel" Then Acad.acShowMessage "中断しました。":Exit For
        End If
    Next

    '後処理
    Acad.dlUnload
    Acad.acPostCommand "UNDO E "
    Acad.acPostCommand "UNDO 1 "
End Sub

'ダイアログ作成&表示
Sub DialogCreate()
    Acad.dlLoad "イベントバッファ処理",,True
    Acad.dlAddLabel "lblInfo", "直線を1000本引きます。", 22, 2
    Acad.dlIncCurrentX 30
    Acad.dlAddButton "cmdCancel", "中断", 6, -1
    Acad.dlShow 0,0
End Sub

'エラー処理
Sub Er()
    'ユーザーによるキャンセル
    If Acad.ErrNumber = vbObjectError + 1000 Then
        'ここにキャンセル時の処理を追加
    Else
        'エラー内容表示
        Acad.ShowError
    End If
End Sub