Clarion でプログラムによってボタン クリック イベントを発生させる方法はありますか? 私は次のことを試しましたが、うまくいきませんでした:
! Doesn't work:
?ResetInput
! Also doesn't work:
?ResetInput:Accepted
数時間検索した後、解決策を見つけました。
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)