<<<Назад <<< |
Создадим в директории с миссией файл Description.ext. И откроем его в блокноте.
Примечание:
Рекомендую прочесть все предыдущие статьи, т.к. коментарии из них я не переносил сюда, что бы не загромождать место.
// Определяем используемые шрифты
Вот и конец файла Description.ext
#define FontM "TahomaB36"
#define FontHTML "CourierNewB64"
// Стили форматирования текста
#define ST_LEFT 0
#define ST_RIGHT 1
#define ST_CENTER 2
#define ST_FRAME 64
// Элементы управления
#define CT_STATIC 0
#define CT_BUTTON 1
#define CT_EDIT 2
#define CT_COMBO 4
#define CT_ACTIVETEXT 11
// Создаем шаблоны для ВСЕХ элементов управления
// Статический текст
class RscText
{
type = CT_STATIC;
idc = -1;
style = ST_LEFT;
colorBackground[] = {0, 0, 0, 0};
colorText[] = {1, 1, 1, 1};
font = FontM;
sizeEx = 0.04;
};
// Ссылка
class RscActiveText
{
type = CT_ACTIVETEXT;
idc = -1;
style = ST_LEFT;
color[] = {1, 1, 1, 1};
colorActive[] = {1, 0, 0, 1};
font = FontM;
sizeEx = 0.04;
soundEnter[] = {"ui\ui_over", 0.2, 1};
soundPush[] = {, 0.2, 1};
soundClick[] = {"ui\ui_ok", 0.2, 1};
soundEscape[] = {"ui\ui_cc", 0.2, 1};
default = false;
};
// Кнопка
class RscButton
{
type = CT_BUTTON;
idc = -1;
style = ST_CENTER;
colorText[] = {0, 0, 0, 1};
font = FontHTML;
sizeEx = 0.025;
soundPush[] = {, 0.2, 1};
soundClick[] = {"ui\ui_ok", 0.2, 1};
soundEscape[] = {"ui\ui_cc", 0.2, 1};
default = false;
};
// Поле для ввода текста.
class RscEdit
{
type = CT_EDIT;
idc = -1;
style = ST_LEFT;
font = FontHTML;
sizeEx = 0.02;
colorText[] = {0, 0, 0, 1};
colorSelection[] = {0.5, 0.5, 0.5, 1};
autocomplete = false;
text = ;
};
// А это компонент ComboBox.
class RscCombo
{
type = CT_COMBO;
idc = -1;
style = ST_LEFT;
colorSelect[] = {0.4, 0.4, 0.4, 1};
colorText[] = {0.2, 0.2, 0.2, 1};
colorSelectBackground[] = {0.2, 0.2, 0.2, 1};
colorBackground[] = {0.4, 0.4, 0.4, 1};
font = FontHTML;
sizeEx = 0.025;
rowHeight = 0.04;
wholeHeight = 0.3;
};
// Управляющий класс, имя любое
class DlgDialog
{
idd = -1;
movingEnable = true;
// Определяем классы, отвечающие за прорисовку окна диалога
controlsBackground[] =
{
MY_BACKGROUND,
MY_FRAME
};
class MY_BACKGROUND: RscText
{
colorBackground[] = {0.4, 0.4, 0.4, 0.75};
text = ;
x = 0.2;
y = 0.1;
w = 0.6;
h = 0.7;
};
class MY_FRAME: RscText
{
idc = 103;
style = ST_FRAME;
colorText[] = {0, 0, 0, 1};
text = "Это НАШЕ диалоговое окно";
font = FontHTML;
sizeEx = 0.025;
x = 0.22;
y = 0.12;
w = 0.56;
h = 0.66;
};
objects[] = { };
// Список "рабочих" классов
controls[] =
{
HELLO_WORLD,
CLICK_ME,
MY_BUTTON,
MY_COMBO
};
// "Статический текст" - привет всем
class HELLO_WORLD: RscText
{
idc = 100;
style = ST_CENTER;
x = 0.4;
y = 0.45;
w = 0.2;
h = 0.1;
text = "Всем привет!";
};
class CLICK_ME:RscActiveText
{
idc = 101;
style = ST_CENTER;
x = 0.4;
y = 0.65;
w = 0.2;
h = 0.05;
text = "Кликни!";
action = "ctrlSetText [100, lbData[104, lbCurSel 104]]";
// 100 - это идентификатор "Статического текста"
// lbData[104, lbCurSel 104] - Функция получает выделенную строку компанента
COMBO.
// ctrlSetText - а эта функция устанавливает текст "Статического текста" в тот, который
// мы выбрали.
default = true;
};
class MY_BUTTON:RscButton
{
idc = 102;
x = 0.4;
y = 0.25;
w = 0.2;
h = 0.04;
text = "Закрыть окно.";
action = "closeDialog 0";
};
// Как видете у Combo очень мало параметров.
class MY_COMBO:RscCombo
{
// Задаем идентификатор = 104, теперь с помощью его можно обратится к Combo
idc = 104;
x = 0.4;
y = 0.3;
w = 0.2;
h = 0.04;
};
};
Что бы использовать наш компонент сделаем следующее:
Создадим файл dialog.sqs и напишем в нем вот что:
; Пытаемся вызвать класс DlgDialog
_ok = createDialog "DlgDialog"
: Если нет такого, то выходим.
?(!_ok): hint "Ошибка!"; exit
: Ну а если есть, то заполняем компонент Combo данными
; 104 - это идентификатор Combo, а "WEST" - надпись.
_index = lbAdd [104, "WEST"]
; Сопоставляем с этой строкой какие то данные, например другую строку. "Solder"
lbSetData [104, _index, "Solder WEST"]
_index = lbAdd [104, "EAST"]
lbSetData [104, _index, "Solder EAST"]
_index = lbAdd [104, "Resistance"]
lbSetData [104, _index, "Solder RES"]
; По умолчанию выделяем первую строку
lbSetCurSel [104, 0]
теперь скрипт можно вызвать командой: this exec "dialog.sqs"
<<<Назад <<<