Свойства поля ввода: выравнивание текста и "только чтение"

Для объектов типа OBJ_EDIT (поле ввода) MQL-программа может установить два специфических свойства, определяемых с помощью функций ObjectSetInteger/ObjectGetInteger.

Идентификатор

Описание

Тип значений

OBJPROP_ALIGN

Горизонтальное выравнивание текста

ENUM_ALIGN_MODE

OBJPROP_READONLY

Возможность редактирования текста

bool

Перечисление ENUM_ALIGN_MODE содержит следующие элементы.

Идентификатор

Описание

ALIGN_LEFT

Выравнивание по левой границе

ALIGN_CENTER

Выравнивание по центру

ALIGN_RIGHT

Выравнивание по правой границе

Обратите внимание, что в отличие от объектов OBJ_TEXT и OBJ_LABEL, поле ввода не подстраивает автоматически свой размер под введенный текст, поэтому для длинных строк может потребоваться явно задать свойство OBJPROP_XSIZE.

В режиме редактирования внутри поля ввода работает горизонтальная прокрутка текста.

Скрипт ObjectEdit.mq5 создает 4 объекта OBJ_EDIT, из них 3 — редактируемые, с разными способами выравнивания текста, а 4-ый — в режиме "только чтения".

#include "ObjectPrefix.mqh"
   
void SetupEdit(const int x, const int y, const int dx, const int dy,
   const ENUM_ALIGN_MODE alignment = ALIGN_LEFT, const bool readonly = false)
{
   // создаем объект с описанием свойств
   const string props = EnumToString(alignment)
      + (readonly ? " read-only" : " editable");
   const string name = ObjNamePrefix + "Edit" + props;
   ObjectCreate(0, name, OBJ_EDIT, 0, 0, 0);
   // позиция и размер
   ObjectSetInteger(0, name, OBJPROP_XDISTANCE, x);
   ObjectSetInteger(0, name, OBJPROP_YDISTANCE, y);
   ObjectSetInteger(0, name, OBJPROP_XSIZE, dx);
   ObjectSetInteger(0, name, OBJPROP_YSIZE, dy);
   // специфические свойства полей ввода
   ObjectSetInteger(0, name, OBJPROP_ALIGN, alignment);
   ObjectSetInteger(0, name, OBJPROP_READONLY, readonly);
   // цвета (разные в зависимости от редактируемости)
   ObjectSetInteger(0, name, OBJPROP_BGCOLOR, clrWhite);
   ObjectSetInteger(0, name, OBJPROP_COLOR, readonly ? clrRed : clrBlue);
   // содержимое
   ObjectSetString(0, name, OBJPROP_TEXT, props);
   // подсказка для редактируемых 
   ObjectSetString(0, name, OBJPROP_TOOLTIP,
      (readonly ? "\n" : "Click me to edit"));
}
   
void OnStart()
{
   SetupEdit(100, 100, 200, 20);
   SetupEdit(100, 120, 200, 20, ALIGN_RIGHT);
   SetupEdit(100, 140, 200, 20, ALIGN_CENTER);
   SetupEdit(100, 160, 200, 20, ALIGN_CENTER, true);
}

Результат работы скрипта показан на изображении ниже.

Поля ввода в разных режимах

Поля ввода в разных режимах

Вы можете щелкнуть мышью на любом редактируемом поле и изменить его содержимое.