Показать сообщение отдельно
Старый 04.05.2011, 17:38   #4
Bersenev
Бывалый писикарщик
 
Аватар для Bersenev
 
Регистрация: 23.04.2009
Возраст: 53
Город: Ставрополь
Регион: 26
Машина: Opel Zafira 2007
Сообщений: 5,275
Bersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant future
По умолчанию Добавление команд в skin файлы

В RR для создания новых команд использовался файл ExecTBL.ini
Так же это работает и в iCar, но есть ещё одна возможность добавлять свои команды.

Команды нужные в данном конкретном экране можно теперь создавать прямо в нем.

Например, вставив такую строку в файл myskin1.skin, в любом месте между заголовком (три первые строки) и командой End

Код:
........
Script,Init,SetVar;MySkinNum;1
........
Мы можем при нахождении в экране myskin1.skin выполнить данную команду ExecScript;Init

также чтобы не писать длинные команды можно сделать так

Код:
........
Script,Init,SetVar;MySkinNum1;1
Script,Init,SetVar;MySkinNum2;2
Script,Init,SetVar;MySkinNum3;3
 ........
в результате при выполнении команды ExecScript;Init будут выполнены последовательно все три команды

Теперь как это можно использовать. Во-первых это позволяет не замусоривать файл ExecTBL.ini командами нужными только в этом экране. Во-вторых это даёт большие возможности при необходимости выполнять скины динамически

Например, в файле myskin2.skin

Код:
........
Script,Init,SetVar;MySkinNum;2
........
зададим переменную MySkin=myskin2.skin - SetVar;MySkin;myskin2.skin

и выполним такую команду Load;$MySkin$||ExecScript;Init , в результате загрузится скин myskin2.skin и выполниться его скрипт Init и переменная MySkinNum станет равна 2

теперь MySkin=myskin1.skin - SetVar;MySkin;myskin1.skin и выполним туже команду Load;$MySkin$||ExecScript;Init
в результате загрузиться уже скин myskin1.skin и выполниться его скрипт Init и значение MySkinNum = 1

Данный пример упрощён, но именно благодаря ему в скине CFStyle реализована работа с шаблонами для встраивания программ.

Ещё допустим можно использовать команды задаваемые в скине так: в каждом скине создаём скрипт CloseScreen, в каждом скине он будет выполнять свои действия необходимые для корректного закрытия экрана, то есть во всех скинах это может быть разный набор команд. А на горячую клавишу вешаем команду ExecScript;CloseScreen . В результате при нажатии горячей клавиши в любом из экранов будет выполнено именно то действие, которое заданно на закрытие именно в этом скине.

Также есть особенные имена скриптов, на сегодняшний момент это

OnScreenStart
OnScreenEnd

Которые выполняются при входе и при выходе из скина в котором они описаны. Данные команды очень удобны при необходимости вывести оверлайный экран над текущим.

Последний раз редактировалось Bersenev; 05.05.2011 в 08:41.
Bersenev вне форума   Ответить с цитированием