如何以编程方式确定实时代码中活动控件的名称

时间:2015-12-07 20:11:42

标签: livecode

我在运行on KeyboardActivated的堆栈中有一个代码脚本。代码需要活动控件的名称。我可以通过为生成KeyboardActivated的每个控件添加on openfield代码来实现。但是有一种方法可以让堆栈知道哪个控件处于活动状态会更容易。这可能吗?

3 个答案:

答案 0 :(得分:1)

您可以使用前端脚本。要将脚本指定为前脚本,请使用此语法

insert the script of control x into front

您可以使用openField处理程序:

global gLastOpenedField

on openField
  put the long id of the target into gLastOpenedField
  pass openField
end openField

前端脚本将捕获所有openField处理程序,并将目标的长id存储到全局变量中。不要忘记将openField消息传递到下一个级别!

答案 1 :(得分:0)

这就是马克的意思。如果在frontScript中捕获“openField”消息,并且未传递它,则会对其进行处理,但随后将被丢弃。 “pass”命令就是这样做的,沿着层次结构发送它。

你可以反过来思考这个问题。如果“front”中根本没有“openField”处理程序,则消息将正常通过该层次结构级别而不会被捕获(这是正常的方式),然后可以被您提到的那个字段捕获。 / p>

所有处理程序都以这种方式工作。捕获消息时,除非明确传递,否则将对其进行处理和丢弃。解决这种垃圾问题的另一种方法是使用“发送”或“调度”命令,它可以将消息“传递”到任何对象,而不管它在层次结构中的位置。

答案 2 :(得分:0)

你尝试过使用“目标”吗?我从不使用前/后脚本,总是以这种方式对事物进行排序。即:

on KeyboardActivated
  put [short] name of the target into MyVar
-- do your stuff