有没有办法在Clarion中以编程方式触发按钮点击事件?我尝试了以下但是他们没有工作:
! Doesn't work:
?ResetInput
! Also doesn't work:
?ResetInput:Accepted
答案 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)