输入字段特性:文本对齐和只读

对于类型为 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脚本会创建四个 OBJ_EDIT 对象:其中三个可编辑且采用不同的文本对齐方式,第四个处于只读模式。

#include "ObjectPrefix.mqh"
   
void SetupEdit(const int xconst int yconst int dxconst int dy,
   const ENUM_ALIGN_MODE alignment = ALIGN_LEFTconst bool readonly = false)
{
   // create an object with a description of the properties
   const string props = EnumToString(alignment)
      + (readonly ? " read-only" : " editable");
   const string name = ObjNamePrefix + "Edit" + props;
   ObjectCreate(0nameOBJ_EDIT000);
   // position and size
   ObjectSetInteger(0nameOBJPROP_XDISTANCEx);
   ObjectSetInteger(0nameOBJPROP_YDISTANCEy);
   ObjectSetInteger(0nameOBJPROP_XSIZEdx);
   ObjectSetInteger(0nameOBJPROP_YSIZEdy);
   // specific properties of input fields
   ObjectSetInteger(0nameOBJPROP_ALIGNalignment);
   ObjectSetInteger(0nameOBJPROP_READONLYreadonly);
   // colors (different depending on editability)
   ObjectSetInteger(0nameOBJPROP_BGCOLORclrWhite);
   ObjectSetInteger(0nameOBJPROP_COLORreadonly ? clrRed : clrBlue);
   // content
   ObjectSetString(0nameOBJPROP_TEXTprops);
   // tooltip for editable
   ObjectSetString(0nameOBJPROP_TOOLTIP,
      (readonly ? "\n" : "Click me to edit"));
}
   
void OnStart()
{
   SetupEdit(10010020020);
   SetupEdit(10012020020ALIGN_RIGHT);
   SetupEdit(10014020020ALIGN_CENTER);
   SetupEdit(10016020020ALIGN_CENTERtrue);
}

脚本的运行结果如下图所示。

不同模式下的输入字段

不同模式下的输入字段

可以点击任何可编辑字段并更改其内容。