- •«Здравствуй, мир!»
- •Особенности типов окна dialog и palette
- •Пример: живая прокрутка
- •Использование пиктограмм индизайна
- •Определение, какой из элементов списка выбран
- •Упорядочение списков
- •Перемещение объектов списка
- •Добавление иллюстраций в список
- •Списки в несколько колонок
- •Опережающий выбор из списка во время набора
- •Списки как индикаторы процесса
- •Флэшплейер
- •Размер и положение
- •Изменение размера окна
Пример: живая прокрутка
Можно захотеть иметь скрипт для отображения текста, но стандартная функция display() имеет ограничения и не приспособлена работы с большими текстами. Однако нетрудно написать свой метод создания окна с прокруткой.
Дополнительно преимущество состоит в том, что можно копировать текст из окна и вставлять в окно.
// создадим пример массива
array = [];
for (i = 0; i < 150; i++)
array.push ("Строка " + String (i));
alert_scroll ("Пример", array);
function alert_scroll (title, input) // string, string/array
{
// если входной параметр -- массив, преобразуем его в строку
if (input instanceof Array)
input = input.join ("\r");
var w = new Window ("dialog", title);
var list = w.add ("edittext", undefined, input, {multiline: true, scrolling: true});
// Список не должен быть больше максимально возможной высоты окна
list.maximumSize.height = w.maximumSize.height - 750; // << эта строка определяет высоту прокручиваемого окна
list.minimumSize.width = 150;
w.add ("button", undefined, "Закрыть", {name: "ok"});
w.show ();
}
Эта функция имеет один недостаток — при работе с большими массивами заметно время их обработки.
Элемент управления button
Нажимаемые кнопки
Можно использовать различные типы кнопок. Ранее были рассмотрены стандартные нажимаемые кнопки ОК и Cancel, часто используемые в окнах
var w = new Window ("dialog");
w.add ("button", undefined, "OK");
w.add ("button", undefined, "Cancel");
w.show ();
По умолчанию щелчок на клавише ОК эквивалентен нажатию на клавишу Enter, а щелчок на Cancel — на клавишу ESC. И такая работа скрипта будет, если названия этих кнопок будут именно так названы.
После щелчка на кнопке ‘Переключить в верхний регистр’ буквы станут прописными. Это простой пример, но функции, вызываемые событием onClick могут быть любой сложности. (есть несколько других откликов на события /в оригинале callback/, с которыми мы познакомимся позднее.)
Кнопки-пиктограммы (icon buttons)
Кроме стандартных нажимаемых кнопок можно использовать пиктограммы как кнопки. На них отображается не текст, такой как ОК, а изображение. Картинка может быть в формате PNG, IDRC или JPEG.
Вот как выглядит запись такой кнопки в программе:
w.add ("iconbutton", undefined, File (myFile));
Это добавляет кнопку (как pushbutton, т.е. стартовую кнопку) на кнопочной панели, а не текст (например, кнопка а на следующем рисунке кнопочной панели).
a b c d
Кнопки могут быть добавлены как инструментальные кнопки (в оригинале toolbuttons), т.е. показано только изображение, но не сама кнопка ( b ). Кнопки могут работать как тумблеры, т.е. иметь два состояния «вкл/выкл», так кнопка c отжата, а кнопка d нажата.
Вот код, реализующий работу этих кнопок:
var w = new Window ("dialog","РАЗНЫЕ КНОПКИ");
w.orientation = "row";
var f = File ("/с/tmp/icon.jpg");
w.add ("iconbutton", undefined, f ); // a
w.add ("iconbutton", undefined, f, {style: "toolbutton"}); // b
var t1 = w.add ("iconbutton", undefined, f, {style: "toolbutton", toggle: true}); // c
var t2 = w.add ("iconbutton", undefined, f, {style: "toolbutton", toggle: true}); // d
t2.value = true;
w.show ();
В интерфейсе индизайна примеры кнопок-тумблеров можно найти на панелях Text и GREP окна Find/Change, там эти кнопки определяют — надо или нет включать в пространство поиска сноски, мастер-страницы и пр. По умолчанию эти тумблеры выключены, и это состояние управляется свойством value, как показано в последнем примере. Это свойство проверяется, если надо узнать состояние переключателя: if (t1.value == true).
Свойства style и toggle имеют смысл только когда определены для кнопок-пиктограмм, для обычных кнопок эти свойства не работают.
Хорошая практика предполагать в скрипте, что файл пиктограммы может быть не найден, и иметь решение на этот случай:
var w = new Window ("dialog");
var f = File ("/d/test/icon.idrc");
try {var b = w.add ("iconbutton", undefined, f )}
catch (_) {var b = w.add ("button", undefined, "@")}
w.show ();
Если указанного файла не найдено, на экран выводится такое окно:
