OPERATION FLASHPOINT Русская шабашка |
|
Shadow Dragon: АКТИВНЫЙ ТЕКСТ А теперь давайте еще разнообразим наше диалоговое окно, добавив поле для ввода текста (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" |