<<<Назад <<<

Активный текст - часть 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"

<<<Назад <<<