Активный текст - часть III (EDIT)
А теперь давайте еще разнообразим наше диалоговое окно, добавив поле для ввода текста (EDIT).
Для этого к файлу 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_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; // Сдесь идентификатор всегда -1
style = ST_LEFT; // По умолчанию выравнивание по левому краю
font = FontHTML; // Шрифт по умолчанию "CourierNewB64"
sizeEx = 0.02;
colorText[] = {0, 0, 0, 1}; // Цвет текста - черный
colorSelection[] = {0.5, 0.5, 0.5, 1}; // Цвет выделенного текста - серый.
autocomplete = False;
text = ;
};
// Это наш класс
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;
};
// Статический текст, заголовок диалогового окна - Main Dialog
class MY_FRAME : RscText
{
idc = 103;
style = ST_FRAME;
colorText[] = {0, 0, 0, 1};
text = "Main Dialog";
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_EDIT
};
// Вывод строки Hello Word на экран, с последующим изменением
class HELLO_WORLD : RscText
{
idc = 100;
style = ST_CENTER;
x = 0.4;
y = 0.45;
w = 0.2;
h = 0.1;
text = "Hello World!";
};
// Это ссылка, кликнув на которую строка "Helo Word" заменится текстом, который вы ввели.
class CLICK_ME : RscActiveText
{
idc = 101;
style = ST_CENTER;
x = 0.4;
y = 0.65;
w = 0.2;
h = 0.05;
text = "Click Click";
action = "ctrlSetText [100, ctrlText 104]";
// Функция ctrlText 104 получает строку, которую ввел пользователь, т.к. мы присвоили
// идентификатор 104 именно классу MY_EDIT.
// Далее функция ctrlSetText [100, ctrlText 104] полученную строку выводит на экран,
// используя класс HELLO_WORD, с идентификатором 100
default = true;
};
// Эта кнопка закрываем окно диалога
class MY_BUTTON : RscButton
{
idc = 102;
x = 0.4;
y = 0.25;
w = 0.2;
h = 0.04;
text = "Close Dialog.";
action = "closeDialog 0";
};
// А вот и наше поле для ввода текста
class MY_EDIT : RscEdit
{
idc = 104; // Присваиваем идентификатор 104 этому компаненту.
x = 0.3;
y = 0.3;
w = 0.4;
h = 0.04;
};
};
Что бы вызвать окно диалога, используйте команду: OK = CreateDialog "DlgDialog"