2015-04-27 5 views
0

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

У меня есть форма, как это ...

Sample Form

Это вкладка для того, что мне нужно ...

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

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

  • Имя пользователя текстовое поле - 1
  • Пароль текстовое поле - 2
  • Вход кнопки - 3
  • кнопку Отмена - 4

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

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

on tabKey 
    focus on button "logIn" 
end tabKey 

Но я получил ошибку ...

«фокус: не действительный контроль»

я не нашел правильное решение вокруг сети. Как достичь этого?

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

EDIT: Я нашел этот zip-файл, содержащий файл примера livecode от livecode forum, который показывает о кнопке hilite. Это не реальное решение проблемы, потому что она не фокусирует кнопку, но она меняет цвет кнопки, которая выглядит как активная. Когда я нажимаю клавишу пробела, когда кнопка hilite, она ничего не делает.

+0

mai Как вы создаете страницу входа на страницу – Shalu

ответ

-1

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

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

+0

Я хочу сфокусировать кнопку (например, выделение), чтобы я мог нажать «Пробел» (или клавишу «Ввод»), чтобы щелкнуть ее по клавиатуре. Я нашел приложение на форуме livecode, которое делает кнопку hilite, но это не подходящее решение, потому что это только изменение цвета кнопки, которая выглядит как ее активная. Когда я нажимаю клавишу пробела, он ничего не делает. – Mai

+0

См. Мой обновленный вопрос для файла, о котором я говорю. – Mai

1

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

-1

OK. Сделайте две поля на новой карте, а затем две кнопки. Как уже упоминалось Жак, убедитесь, что traversalOn каждой кнопки есть set.Try это в скрипте карты:

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 

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

+0

У меня ошибка «Фокус: не действительный контроль». Вы проверили свой код? – Mai