Prompt
Описание
Prompt - оператор запроса ввода от пользователя. Запрашивает значения для строки, массива или числа. <br>Для подсказки, содержащей больше одного слова, используйте кавычки. <br>Для строки: в переменную($a) записывается введенная строка. Если выбор не был сделан (нажатие ок без ввода строки) - записывается пустая строка. <br>Для числа: в переменную(#a) записывается номер выбора. Если выбор не был сделан (нажатие ок без ввода строки) - записывается ноль. <br>Для массива: в массив(%a) записываются все значения для каждого элемента. Если элемент был выбран - единица, если нет - ноль.
Синтаксис
Привязка к окну: нет. <br>Работа со свернутым окном: да.
Prompt ([!caption] <line1> [line2] [line3] [line4] [line5] ([timeout]))
Где: <br>[!caption] - необязательный параметр. Подсказка, начинается с '!'. <br><line1> [line2] [line3] [line4] [line5] - набор значений для выбора. Одно или больше. <br>([timeout]) - таймаут (время для выбора значения), указывается в секундах в круглых скобках.
set $a prompt (подсказка) set #b prompt (выбор1 выбор2 выбор3 выбор4 выбор5) set %с prompt (выбор1 выбор2 выбор3 выбор4 выбор5)
set $a prompt - Запрос на ввод значения. Возвращает в переменную введенное значение. <br>set #b prompt - Запрос на выбор значения. возвращает номер выбранного значения, либо 0. Выбор подтверждается закрытием окна. <br>set %с prompt - Запрос на выбор нескольких значений. Возвращает указанный массив, содержащий в первой строке, по столбцам соответствующим номерам значений, либо 1 - если элемент выбран, либо 0. <br> <br>Положение окна функции 'prompt':
promptpos_x promptpos_y
Примеры
// Пример 1 set #a prompt (первый "второй выбор" третий) msg #a
// Пример 2 set $a prompt (Введите значение) // Может быть как строкой, так и числом msg Введено: $a
// Пример 3 set %a prompt (первый "второй выбор" третий) // если выбрано 1, иначе 0 msg %a[1] // все значения в одну строку // значения отдельно msg %a[1 1] // первое значение msg %a[1 2] // второе msg %a[1 3] // третье
// Пример 4 set promptpos_x 100 //установить координату 'Х' для окна Prompt set promptpos_y 100 //установить координату 'Y' для окна Prompt set #b prompt (выбор1 выбор2 выбор3 выбор4 выбор5) msg #b
// Пример 5 // Prompt из массива set %a [1] 123 set %a [2] 456 set %a [3] 789 set %a [4] abc set %a [5] def set $a //очищаем строку for #i 1 size(%a) set $a $a %a[#i] //создаём строку из всех элементов массива end_for set $b "prompt ($a ())" set %b [1] "#a" eval (set %b[1] $b) //выводим prompt msg #a End_script
// Пример 6 // Вывод Prompt с подсказкой set $str "Выбрать одно из значений:" // подсказка set #a prompt (!$str Один Два Три) msg #a
// Пример 7 // Вывод Prompt с таймаут set $str "Выбрать одно из значений:" set #a prompt (!$str Один Два Три (5)) // на выбор значения 5 секунд, если выбор не сделан вернёт в переменную '#a' 0. msg #a
Смотрите также
Hint <br>Promptpos x
История развития
2.14 <br>Добавил возможность из скрипта запросить значение у пользователя.
'set $a prompt (<подсказка>)'
Запрос на ввод значения. возвращает в переменную введенное значение.
'set #b prompt (<выбор1> <выбор2> [выбор3] [выбор4] [выбор5])'
Запрос на выбор значения. возвращает номер выбранного значения, либо 0. выбор подтверждается закрытием окна..
2.20 <br>Поправил внешний вид формочки 'prompt' и добавил кнопочку 'Ок'. <br>Поправил 'prompt' на предмет соответствия заявленному функционалу, и добавил возможность выбора нескольких значений:
set $a prompt (подсказка)
Запрос на ввод значения. возвращает в переменную введенное значение.
set #b prompt (выбор1 выбор2 выбор3 выбор4 выбор5)
Запрос на выбор значения. возвращает номер выбранного значения, либо 0. выбор подтверждается закрытием окна.
set %с prompt (выбор1 выбор2 выбор3 выбор4 выбор5)
Запрос на выбор нескольких значений. Возвращает указанный массив, содержащий в первой строке, по столбцам соответствующим номерам значений, либо 1 - если элемент выбран, либо 0 Пример:
set %s prompt (ch1 ch2 ch3 ch4 ch5) set #a size (%s [ 1 ]) // строка всегда одна, но в ней несколько столбцов set #b %s [ 1 #a ] // последний элемент set $c %s [ 1 ] // получим чтото типа 10010, т.е. все элементы сразу.
2.21 <br>Добавил в 'prompt' таймаут ожидания в секундах. Указывается после всех параметров в круглых скобках:
'set #b prompt (ch1 ch2 ch3 [(таймаут)])'
Исправил незначительную ошибку в функции 'prompt'. Не обнулялся массив результатов.
2.27.2 <br>Слегка подправил команду 'prompt': <br>Исправил вывод подсказки при запросе текстового значения <br>Добавил закрытие диалогового окна по клавише 'Enter' <br>Добавил закрытие диалогового окна при выборе значения мышкой <br>Добавил возможность указать многострочный комментарий с помощью '/n' при запросе строкового значения <br>Добавил возможность простого выбора числового ответа с клавиатуры <br>Снял ограничение на 5 элементов выбора <br>Исправил отображение указанного таймаута ожидания в виде дополнительного пункта <br>Немного косметики <br>Если диалоговое окно закрылось по таймауту и в нем ничего не выбрано, то возвращается 0 или пустая строка, иначе - выбранный пункт <br>Кнопка 'Ок' играет еще более символическую роль чем раньше
2.29 <br>Подправил малость 'prompt'. <br>Подправил 'prompt', при остановке скрипта открытое окно промпта закрывается.
2.32 <br>Исправил ошибку в команде 'prompt', из-за которой все, что шло после пустых переменных игнорировалось. <br>Исправил ошибку повторного вызова команды 'prompt', после остановки скрипта с активным окном промпта. <br>Добавил в 'prompt' возможность выводить не нажимающиеся строки (без чекбоксов) с помощью восклицательного знака в начале строки.
set #s prompt (!Test ! Passed)
Добавил в 'prompt' возможность выводить свой заголовок с помощью восклицательного знака, указанного в начале первой строки.
2.36.2 <br>Добавил переменные положения окна функции 'prompt': 'promptpos_x', 'promptpos_y'. Значения изменяются только для текущего скрипта.
2.37 <br>Починил чтение 'promptpos_x' и 'promptpos_y'.
2.39 <br>Исправил ошибку, возникающую при отсутствии пробела перед скобкой в команде 'prompt'.
2.41 <br>Расширил до 16к строку параметров передаваемую в команду 'prompt'. <br>Сделал автоматическое определение ширины окна команды 'prompt'.