2

Clarion でプログラムによってボタン クリック イベントを発生させる方法はありますか? 私は次のことを試しましたが、うまくいきませんでした:

! Doesn't work:
?ResetInput

! Also doesn't work:
?ResetInput:Accepted
4

1 に答える 1

3

数時間検索した後、解決策を見つけました。

POST(EVENT:Accepted, ?ResetInput)

これを行うより正しい方法がある場合は、他の回答を投稿してください。


Clarion ヘルプ ドキュメントの POST 関数に関する情報は次のとおりです。

POST (イベント[,コントロール] [,スレッド] [,位置] )

event : イベント番号を含む整数定数、変数、式、または EQUATE。400h ~ 0FFFh の範囲の値は、ユーザー定義のイベントです。

control : イベントの影響を受けるコントロールのフィールド番号を含む整数定数、EQUATE、変数、または式。省略した場合、イベントはフィールドに依存しません。

thread : ACCEPT ループがイベントを処理する実行スレッド番号を含む整数定数、EQUATE、変数、または式。省略した場合、イベントは現在のスレッドに投稿されます。

position : ゼロ (0) または 1 (1) を含む整数定数、EQUATE、変数、または式。1 の場合、イベント メッセージはイベント メッセージ キューの先頭に配置されます。省略した場合、またはゼロ (0) の場合、イベント メッセージはイベント メッセージ キューの最後に配置されます。

POST は、指定されたスレッドの現在アクティブな ACCEPT ループにイベントを送信します。これは、ユーザー定義のイベントまたはその他のイベントです。ユーザー定義のイベント番号は、400h ~ 0FFFh の任意の整数として定義できます。コントロールを指定して投稿されたイベントはフィールド固有のイベントであり、指定されていないイベントはフィールドに依存しないイベントです。

イベントを POST すると、ACCEPT ループが発生しますが、イベントは発生しません。たとえば、POST(EVENT:Selected,?MyControl) は、?MyControl の EVENT:Selected 内のすべてのコードを実行しますが、?MyControl がフォーカスを得ることはありません。

例:

Win1 WINDOW('Tools'),AT(156,46,32,28),TOOLBOX
    BUTTON('Date'),AT(0,0,,),USE(?Button1)
    BUTTON('Time'),AT(0,14,,),USE(?Button2)
END

CODE
    OPEN(Win1)
    ACCEPT

    ! Detect user-defined event:        
    IF EVENT() = EVENT:User THEN BREAK END

    CASE ACCEPTED()
    OF ?Button1
        POST(EVENT:User,,UseToolsThread)  !Post field-independent event to other thread
    OF ?Button2
        POST(EVENT:User) ! Post field-independent event to this thread
    END
END

CLOSE(Win1)
于 2014-07-23T20:37:29.987 に答える