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

Для объектов типа 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 xconst int yconst int dxconst int dy,
   const ENUM_ALIGN_MODE alignment = ALIGN_LEFTconst bool readonly = false)
{
   // создаем объект с описанием свойств
   const string props = EnumToString(alignment)
      + (readonly ? " read-only" : " editable");
   const string name = ObjNamePrefix + "Edit" + props;
   ObjectCreate(0nameOBJ_EDIT000);
   // позиция и размер
   ObjectSetInteger(0nameOBJPROP_XDISTANCEx);
   ObjectSetInteger(0nameOBJPROP_YDISTANCEy);
   ObjectSetInteger(0nameOBJPROP_XSIZEdx);
   ObjectSetInteger(0nameOBJPROP_YSIZEdy);
   // специфические свойства полей ввода
   ObjectSetInteger(0nameOBJPROP_ALIGNalignment);
   ObjectSetInteger(0nameOBJPROP_READONLYreadonly);
   // цвета (разные в зависимости от редактируемости)
   ObjectSetInteger(0nameOBJPROP_BGCOLORclrWhite);
   ObjectSetInteger(0nameOBJPROP_COLORreadonly ? clrRed : clrBlue);
   // содержимое
   ObjectSetString(0nameOBJPROP_TEXTprops);
   // подсказка для редактируемых 
   ObjectSetString(0nameOBJPROP_TOOLTIP,
      (readonly ? "\n" : "Click me to edit"));
}
   
void OnStart()
{
   SetupEdit(10010020020);
   SetupEdit(10012020020ALIGN_RIGHT);
   SetupEdit(10014020020ALIGN_CENTER);
   SetupEdit(10016020020ALIGN_CENTERtrue);
}

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

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

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

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