实时代码中的Tab顺序

时间:2015-04-27 03:57:09

标签: livecode tab-ordering

我允许用户使用Tab键浏览表单。

我有这样的表格......

Sample Form

这是我需要的标签顺序......

  • 窗口已打开:专注于用户名
  • 按Tab :关注密码
  • 按Tab :专注于登录按钮
  • 按Tab :关注取消按钮
  • 按Tab :返回用户名(依此类推)

我将图层编号(在Property Inspector窗口中)设置为以下...

  • 用户名文本框 - 1
  • 密码文本框 - 2
  • 登录按钮 - 3
  • 取消按钮 - 4

当我运行此表单时,会重点关注用户名。当我按Tab键时,它会转到密码。当我再次按Tab键时,它会返回到用户名(而不是按钮)。

我尝试在密码文本框中添加代码以强制关注按钮。

on tabKey
   focus on button "logIn"
end tabKey

但我收到了错误......

"焦点:不是有效的控制"

我在网上找不到合适的解决方案。怎么做到这一点?

在其他语言中,这样做更容易。

编辑:我发现这个zip文件包含来自livecode forum的实时代码示例文件,该文件显示了按钮的hilite。这不是问题的真正解决方案,因为它并没有真正聚焦按钮,而是改变了看起来像活动按钮的按钮的颜色。当我按下空格键而按钮是hilite时,它什么也没做。

4 个答案:

答案 0 :(得分:1)

将按钮的遍历设置为true。这允许您想要的行为。请注意,Mac默认情况下不支持按钮遍历,但它可以在Windows上运行。

答案 1 :(得分:0)

在“工具”>“项目浏览器”中,按照您要浏览的顺序从上至下对元素进行排序。

order of tab

答案 2 :(得分:-1)

"聚焦"对按钮来说不是一个特别有用的术语。当你专注于一个领域时,你就是" hiliting"该字段,并将光标放在其文本后面(如果有的话)。

但对于"焦点"它意味着什么?在按钮上?你想要按钮,或者以其他方式引起注意吗?如果是这样,当从密码字段中跳出标签时,您需要设置按钮的某些属性,但可能不会关注它。

答案 3 :(得分:-1)

行。在新卡上创建两个字段,然后在两个按钮上创建两个字段。正如Jacque所说,确保每个按钮的遍历都已设置。请在卡片脚本中尝试:

on tabkey
put the layer of the target into tLayer
put the name of the target into tName
put tname
if tName contains "button" then
  set the hilite of the target to "false"
end if
if tLayer = the number of controls then focus on control 1
else
  focus on control (tLayer + 1)
  if the name of control (tLayer + 1) contains "button" then set the hilite of  control (tLayer + 1) to "true"
end if
 end tab key

在选项卡中,您将看到每个控件的操作。