以编程方式触发按钮单击事件

时间:2014-07-23 18:26:33

标签: events clarion

有没有办法在Clarion中以编程方式触发按钮点击事件?我尝试了以下但是他们没有工作:

! Doesn't work:
?ResetInput

! Also doesn't work:
?ResetInput:Accepted

1 个答案:

答案 0 :(得分:3)

经过几个小时的搜索,我找到了解决方案:

POST(EVENT:Accepted, ?ResetInput)

如果有更正确的方法,请发布任何其他答案。


以下是Clarion帮助文档中有关POST功能的信息:

发布事件 [,控件] [,线程] [,职位])

event :包含事件编号的整数常量,变量,表达式或EQUATE。 400h到0FFFh范围内的值是用户定义的事件。

control :整数常量,EQUATE,变量或表达式,包含受事件影响的控件的字段编号。如果省略,则事件与字段无关。

thread :包含执行线程编号的整数常量,EQUATE,变量或表达式,其ACCEPT循环用于处理事件。如果省略,则事件将发布到当前线程。

position :包含零(0)或一(1)的整数常量,EQUATE,变量或表达式。如果为(1),则事件消息位于事件消息队列的前面。如果省略或为零(0),则事件消息将放置在事件消息队列的末尾。

POST将事件发布到指定线程的当前活动ACCEPT循环。这可能是用户定义的事件或任何其他事件。用户定义的事件编号可以定义为400h和0FFFh之间的任何整数。使用指定控件发布的任何事件都是特定于字段的事件,而没有事件的事件是与字段无关的事件。

发布事件会导致ACCEPT循环触发,但不会导致事件发生。"例如,POST(EVENT:Selected,?MyControl)执行EVENT中的任何代码:选择?MyControl,但不会导致?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)