Thuộc tính trường nhập liệu: căn chỉnh văn bản và chỉ đọc
Đối với các đối tượng loại OBJ_EDIT
(trường nhập liệu), một chương trình MQL có thể đặt hai thuộc tính cụ thể được định nghĩa bằng các hàm ObjectSetInteger/ObjectGetInteger
.
Định danh | Mô tả | Kiểu giá trị |
---|---|---|
OBJPROP_ALIGN | Căn chỉnh văn bản ngang | ENUM_ALIGN_MODE |
OBJPROP_READONLY | Khả năng chỉnh sửa văn bản | bool |
Bộ liệt kê ENUM_ALIGN_MODE
bao gồm các thành viên sau.
Định danh | Mô tả |
---|---|
ALIGN_LEFT | Căn trái |
ALIGN_CENTER | Căn giữa |
ALIGN_RIGHT | Căn phải |
Lưu ý rằng, không giống như các đối tượng OBJ_TEXT
và OBJ_LABEL
, trường nhập liệu không tự động điều chỉnh kích thước để vừa với văn bản được nhập, vì vậy đối với các chuỗi dài, bạn có thể cần đặt rõ ràng thuộc tính OBJPROP_XSIZE
.
Trong chế độ chỉnh sửa, cuộn văn bản ngang hoạt động bên trong trường nhập liệu.
Script ObjectEdit.mq5
tạo ra bốn đối tượng OBJ_EDIT
: ba trong số đó có thể chỉnh sửa với các phương pháp căn chỉnh văn bản khác nhau và cái thứ tư ở chế độ chỉ đọc.
#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)
{
// tạo một đối tượng với mô tả các thuộc tính
const string props = EnumToString(alignment)
+ (readonly ? " read-only" : " editable");
const string name = ObjNamePrefix + "Edit" + props;
ObjectCreate(0, name, OBJ_EDIT, 0, 0, 0);
// vị trí và kích thước
ObjectSetInteger(0, name, OBJPROP_XDISTANCE, x);
ObjectSetInteger(0, name, OBJPROP_YDISTANCE, y);
ObjectSetInteger(0, name, OBJPROP_XSIZE, dx);
ObjectSetInteger(0, name, OBJPROP_YSIZE, dy);
// các thuộc tính cụ thể của trường nhập liệu
ObjectSetInteger(0, name, OBJPROP_ALIGN, alignment);
ObjectSetInteger(0, name, OBJPROP_READONLY, readonly);
// màu sắc (khác nhau tùy thuộc vào khả năng chỉnh sửa)
ObjectSetInteger(0, name, OBJPROP_BGCOLOR, clrWhite);
ObjectSetInteger(0, name, OBJPROP_COLOR, readonly ? clrRed : clrBlue);
// nội dung
ObjectSetString(0, name, OBJPROP_TEXT, props);
// chú thích cho trường có thể chỉnh sửa
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);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Kết quả của script được hiển thị trong hình ảnh dưới đây.
Trường nhập liệu ở các chế độ khác nhau
Bạn có thể nhấp vào bất kỳ trường nào có thể chỉnh sửa và thay đổi nội dung của nó.