Улучшенное управление работы с выпадающим списком — КиберПедия 

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Улучшенное управление работы с выпадающим списком

2021-05-27 26
Улучшенное управление работы с выпадающим списком 0.00 из 5.00 0 оценок
Заказать работу

Имеющееся в ScriptUI cтандартное средство управления dropdown можно немного улучшить. В большинстве существующих выпадающих списков при вводе символа в списке выделяется первая позиция, начинающаяся с этой буквы. К сожалению, существующая в Script UI реализация выпадающего списка такой возможности не имеет. Исправить положение можно, добавив в скрипт обработки выпадающего списка обработчик событий, реагирующий на ввод символов, и выбирающий первый объект в списке, начинающийся с введенных букв.

array = ["one", "thirty", "two", "three"];

var w = new Window ("dialog", "Drop-down select");

var e = w.add ("edittext");

var ddown = w.add ("dropdownlist", undefined, array);

ddown.minimumSize.width = 200;

ddown.selection = 0; ddown.active = true;

ddown.addEventListener ("keydown", function (k)

{

k = k.keyName.toLowerCase();

for (var i = 0; i < array.length; i++)

if (array[i].charAt(0).toLowerCase() == k)

{

ddown.selection = i;

Break

}

}

)

w.show ();

Так выглядит окно после ввода с клавиатуры буквы t.

{/ Это дело вкуса, и мне не нравится, когда функция обработки события оформлена так, как в последнем скрипте. На мой взгляд, оформление функции в виде отдельного модуля делает текст понятнее. Вот как можно переписать код:

/}

 

Стили написания скриптов: строка ресурсов (resource string) и на основе кода (code based)

Все приведенные выше скрипты — это примеры программирования на основе кода. С точки зрения П. Карела, это наиболее удобный способ кодирования. Но есть ещё два варианта.

 

 

Строка ресурсов

Первый вариант — это так называемая строка ресурсов, в которой всё окно представляется как отдельная строка, в которой определены характеристики окна как объекта. Следующий скрипт — это вариант скрипта обсуждавшегося на странице 6 руководства

var myName = myInput ();

function myInput ()

{

var myWindow = new Window ("dialog", "Form");

var myInputGroup = myWindow.add ("group");

myInputGroup.add ("statictext", undefined, "Name:");

var myText = myInputGroup.add ("edittext", undefined, "John");

myText.characters = 20;

myText.active = true;

var myButtonGroup = myWindow.add ("group");

myButtonGroup.alignment = "right";

myButtonGroup.add ("button", undefined, "OK");

myButtonGroup.add ("button", undefined, "Cancel");

if (myWindow.show () == 1)

return myText.text;

Else

exit ();

}

но теперь в виде строки ресурсов:

var myName = myInput ();

function myInput ()

{

var winResource =

"dialog {text: 'Form', \

myInput: Group {\

n: StaticText {text: 'Name:'},\

myText: EditText {text: 'John', characters: 20, active: true}\

},\

myButtonGroup: Group {alignment: 'right',\

b1: Button {text: 'OK'},\

b2: Button {text: 'Cancel'}\

}\

}";

var myWindow = new Window (winResource);

if (myWindow.show () == 1)

return myWindow.myInput.myText.text;

Else

exit ();

}

Сторонники этого стиля отмечают, что он приучает программистов отделять описание окна от кода работы с ним. Это видно в приведенном выше примере: ресурсная строка определяет только вид окна, но не несет никакой информации о том, что происходит при нажатии кнопок и вводе текста в поле. Какой из вариантов использовать — это дело вкуса. Реальное преимущество, однако, использования строки ресурсов в том, что в результате получается очень компактный код (хотя этого нельзя ощутить на приведенном выше примере.)

Недостаток этого подхода в то, что программу сложно отладить, если где-то вкралась ошибка. Выдаваемые ScriptUI сообщения малоинформативны. И намного проще изменить оформление окна, если оно сделано на основе кода.

Поскольку строка ресурсов определяет сложный объект, можно обращаться к свойствам любого объекта, как любому свойству JavaScript, как в показано тут:

return myWindow.myInput.myText.text;

Обратите внимание на использование прописных букв в строке ресурсов: используйте Button и StaticText, а не button и statictext — имена контролов и свойств подчиняются другой логике чувствительности к регистру букв, нежели в методе кодирования на основе кода.

 

 

Объект на основе кода

Вторая альтернатива, которая названа тут «объектный код» по причине отсутствия лучшего решения — это способ — смесь двух других стилей, тут не используется ресурсный код, но окно всё же определяется как сложный объект. Это иллюстрируется в следующем примере, тут снова повторена программа со страницы 6, но имена переменных сокращены для ускорения работы. И это основная причина неудобства такого подхода — пройдет немного времени, и смысл этих сокращений станет загадкой. Есть и преимущество — для создания окна требуется только одна переменная.

var myName = myInput ();

function myInput ()

{

var win = new Window ("dialog", "Form");

win.inpGrp = win.add ("group");

win.inpGrp.add ("statictext", undefined, "Name:");

win.inpGrp.txt = win.inpGrp.add ("edittext", undefined, "John");

win.inpGrp.txt.characters = 20;

win.inpGrp.active = true;

win.btnGrp = win.add ("group");

win.btnGrp.alignment = "right";

win.btnGrp.add ("button", undefined, "OK");

win.btnGrp.add ("button", undefined, "Cancel");

if (win.show () == 1)

return win.inpGrp.txt.text;

Else

exit ();

}

 

 

Смешанные стили

Эти два стиля программирования можно смешивать. Вот пример того же скрипта, в текст на базе кода вставлена строка ресурсов:

var myName = myInput ();

function myInput ()

{

var myWindow = new Window ("dialog", "Form");

var myInputGroup = myWindow.add ("group");

myInputGroup.add ("statictext", undefined, 'Name:');

var myText = myInputGroup.add ("edittext {text: 'John', characters: 20, active: true}");

myWindow.btnGrp = myWindow.add ("group");

myWindow.btnGrp.alignment = "right";

myWindow.btnGrp.add ("button", undefined, "OK");

myWindow.btnGrp.add ("button", undefined, "Cancel");

if (myWindow.show () == 1)

return myText.text;

Else

exit ();

}

 

 

Ресурсы

Фактически настоящим всеобъемлющим информационным ресурсом о ScriptUI является глава в руководстве Tools Guide, которое есть в комплекте файлов ESTK, его можно найти в меню справочника (Help).

Объектную модель ESTK можно просматривать с помощью вьюера. В замечательной коллекции информационных ресурсов Jongware есть информация об объектных моделях разных версий индизайна.

Другой источник информации — коллекция скриптов в составе ESTK, ищите его на своей машине.

Также есть много блогов и форумов, посвященных скриптингу.

 

Блоги

Marc Autret's Indiscript: http://www.indiscripts.com/

Marijan Tompa's InDesign Snippets: http://indisnip.wordpress.com/

 

Форумы по отдельным темам

http://forums.adobe.com/community/indesign/indesign_scripting

 

Изменение цвета кнопок

http://forums.adobe.com/message/2335096#2335096)

 

Изменение размера окна

http://forums.adobe.com/message/2280793#2280793

http://forums.adobe.com/message/2741942#2741942

 

Кнопки-пиктограммы

http://forums.adobe.com/message/2326630#2326630

http://forums.adobe.com/message/2899148#2899148

 

Панели с прокруткой

http://forums.adobe.com/message/2899148#2899148

 

индикатор выполнения задания

http://forums.adobe.com/message/3152162#3152162

 

 


Поделиться с друзьями:

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.03 с.