0

我允许用户使用 Tab 键在表单中导航。

我有这样的表格...

样本表格

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

  • 窗口打开:关注用户名
  • 按 T​​ab:专注于密码
  • 按 T​​ab:专注于登录按钮
  • 按 T​​ab:专注于取消按钮
  • 按 T​​ab:返回用户名(等等)

我将层号(在“属性检查器”窗口中)设置为以下...

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

当我运行这个表单时,用户名是焦点。当我按 Tab 时,它转到密码。当我再次按 Tab 时,它会返回到用户名(而不是按钮)。

我试图将代码添加到密码文本框中以强制聚焦按钮。

on tabKey
   focus on button "logIn"
end tabKey

但是我有一个错误...

“焦点:不是一个有效的控制”

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

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

编辑:我找到了这个 zip 文件,其中包含来自livecode 论坛的 livecode 示例文件,其中显示了有关按钮的 hilite。这不是问题的真正解决方案,因为它并没有真正聚焦按钮,而是改变了看起来像其活动的按钮的颜色。当我在按钮处于hilite时按空格键时,它什么也不做。

4

4 回答 4

1

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

于 2015-04-27T07:48:32.183 回答
0

在工具 > 项目浏览器中,按照您想要通过标签的顺序从上到下对元素进行排序。

标签的顺序

于 2020-05-11T12:39:34.030 回答
-1

好的。在新卡上创建两个字段,然后创建两个按钮。正如 Jacque 所说,确保每个按钮的 traversalOn 已设置。在卡片脚本中试试这个:

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

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

于 2015-04-27T16:22:53.743 回答
-1

“焦点”对于按钮来说并不是一个特别有用的术语。当您关注某个字段时,您正在“隐藏”该字段,并将光标放在其文本之后(如果有)。

但是“关注”按钮是什么意思呢?你想hilite那个按钮,还是以其他方式引起注意?如果是这样,当跳出密码字段时,您将希望设置按钮的某些属性,但可能不关注它。

于 2015-04-27T04:40:53.027 回答