Livecode中的标签顺序

问题描述 投票:0回答:4

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

我的表格是这样的...

Sample Form

这就是我所需要的Tab键顺序...

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

我将图层号(在属性检查器窗口)设置为如下所示...

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

当我运行这个表格时,用户名被关注。当我按tab键时,它转到密码。当我再次按Tab键时,它又回到了用户名(不是按钮)。

我试着在密码文本框中添加代码来强制聚焦按钮。

on tabKey
   focus on button "logIn"
end tabKey

但我得到一个错误...

"焦点:不是一个有效的控件"

我在网上没有找到合适的解决方案。如何实现这一点?

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

EDIT: 我找到了这个压缩文件 里面有一个livecode的样本文件 活码论坛 显示了按钮的颜色。这并不是问题的真正解决方案,因为它并没有真正聚焦按钮,而是改变了按钮的颜色,看起来像是在活动。当我按空格键时,按钮是ilite的,它什么也不做。

livecode tab-ordering
4个回答
1
投票

将按钮的遍历设置为true。这将允许你想要的行为。请注意,Macs默认不支持按钮遍历,但在Windows上可以工作。


0
投票

在工具>项目浏览器中,按照你想要的选项卡遍历的顺序从上到下排列你的元素。

order of tab


-1
投票

"焦点 "对于按钮来说不是一个特别有用的术语。当你聚焦在一个字段上时,你是在 "hiliting "这个字段,并将光标放在它的文本(如果有的话)之后。

但 "聚焦 "在一个按钮上是什么意思呢?你是想让那个按钮 "hilite",还是以其他方式让人们注意到它?如果是这样,当从密码字段中分页时,你会想设置按钮的一些属性,但可能不会关注它。


-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

在卡片脚本中试试这样: 当你用标签时,你会看到每个控件的动作。

© www.soinside.com 2019 - 2024. All rights reserved.