Порядок табуляции в Livecode

Я разрешаю пользователю использовать клавишу Tab для навигации по форме.

У меня такая форма ...

Образец формы

Это порядок табуляции, который мне нужен ...

  • Окно открыто: сосредоточьтесь на имени пользователя
  • Нажмите Tab: сосредоточьтесь на пароле
  • Нажмите Tab: выберите кнопку "Войти".
  • Нажмите Tab: выберите кнопку "Отмена".
  • Нажмите Tab: вернитесь к имени пользователя (и т. д.)

Я установил номер слоя (в окне Property Inspector) следующим образом ...

  • Текстовое поле имени пользователя - 1
  • Текстовое поле пароля - 2
  • Кнопка входа в систему - 3
  • Кнопка отмены - 4

Когда я запускаю эту форму, фокусируется имя пользователя. Когда я нажимаю вкладку, он переходит к паролю. Когда я снова нажимаю вкладку, он возвращается к имени пользователя (а не к кнопкам).

Я попытался добавить код в текстовое поле пароля, чтобы заставить кнопку фокусироваться.

on tabKey
   focus on button "logIn"
end tabKey

Но у меня ошибка ...

"фокус: недопустимый элемент управления"

Я не нашел подходящего решения в сети. Как этого добиться?

На других языках это сделать проще.

РЕДАКТИРОВАТЬ: Я нашел этот zip-файл, содержащий образец файла живого кода из форум живого кода, который показывает про кнопку hilite. Это не настоящее решение проблемы, потому что на самом деле он не фокусирует кнопку, а меняет цвет кнопки, который выглядит как активный. Когда я нажимаю пробел, когда кнопка хилит, ничего не происходит.


person Mai    schedule 27.04.2015    source источник
comment
май, как вы создаете страницу входа в систему   -  person Shalu    schedule 28.04.2015


Ответы (4)


Установите для кнопки traversalOn значение true. Это позволяет вести себя так, как вы хотите. Обратите внимание, что Mac не поддерживает обход кнопок по умолчанию, но он будет работать в Windows.

person Jacque    schedule 27.04.2015

В инструментах> обозреватель проекта расположите элементы сверху вниз в том порядке, в котором вы хотите использовать табуляцию.

порядок табуляции

person SquidRatt    schedule 11.05.2020

«Фокус» - не очень полезный термин для обозначения кнопки. Когда вы фокусируетесь на поле, вы «задерживаете» это поле и помещаете курсор после его текста, если таковой имеется.

Но что значит «сфокусироваться» на кнопке? Вы хотите выделить эту кнопку или как-то еще привлечь к ней внимание? Если это так, то при выходе из поля пароля вы захотите установить какое-то свойство кнопки, но, вероятно, не фокусируйтесь на нем.

person dunbarx    schedule 27.04.2015
comment
Я хочу сфокусировать кнопку (например, выделение), чтобы я мог нажать клавишу пробела (или клавишу Enter), чтобы щелкнуть ее с клавиатуры. Я нашел вложение на форуме livecode, которое делает кнопку hilite, но это не подходящее решение, потому что оно предназначено только для изменения цвета кнопки, которая выглядит как активная. Когда я нажимаю пробел, ничего не происходит. - person Mai; 27.04.2015
comment
См. Мой обновленный вопрос по файлу, о котором я говорю. - person Mai; 27.04.2015

В ПОРЯДКЕ. Сделайте на новой карточке два поля, а затем две кнопки. Как уже упоминал Жак, убедитесь, что для каждой кнопки задано значение 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

При переходе на вкладку вы увидите действие для каждого элемента управления.

person dunbarx    schedule 27.04.2015
comment
У меня ошибка Фокус: недопустимый элемент управления. Вы тестировали свой код? - person Mai; 01.05.2015