📚
自定义图形控件(二):把控件做成 IncGUI 库
GUI库控件IncGUI面向对象MQL5
从单控件到控件库
第一篇提出创建图形控件的原则,用于解决程序与用户交互的主要问题。本文把所有控件作为独立类加入 IncGUI.mqh(新文件名 IncGUI_v2.mqh),形成可复用库。
外壳类的修正
CGraphicObjectShell 增加了坐标与尺寸的同步设置方法 SetXYDistance()、SetXYSize();并修正了若干方法名里 Distanse 的拼写错误(原拼写为 Distanse)。
// IncGUI_v2.mqh 控件清单(示意)
#include <IncGUI_v2.mqh>
class CInputBox { void SetValueString(); void SetReadOnly(bool); bool ReadOnly(); };
class CSpinInputBox{ /* 带上下箭头的数字输入 */ };
class CCheckBox { bool Checked(); void SetChecked(bool); };
class CRadioGroup { int Selected(); void SetSelected(int); };
class CVSсrollBar { int Pos(); void SetPos(int); };
具体控件清单
本库包含:CInputBox 输入框、CSpinInputBox 微调按钮输入框、CCheckBox 复选框、CRadioGroup 单选按钮组、CVSсrollBar 垂直滚动条等。CInputBox 修正了 SetValueString 的拼写,并新增 SetReadOnly/ReadOnly 控制键盘输入。
- CInputBox:文本/数值输入,支持只读模式。
- CSpinInputBox:数值微调,适合手数/点数。
- CCheckBox / CRadioGroup:布尔与单选,适合策略开关。
- CVSсrollBar:长列表滚动,适合多品种面板。
CColorSchemes 配色方案
CColorSchemes 的 Show() 配色样本次序已调整:方案垂直排列、颜色水平排列,并新增若干配色。统一的配色类让面板风格一致、易换肤。
⚠ 修正拼写别漏调用方
把 Distanse 改成 Distance、SetValueStrind 改成 SetValueString 后,要同步改所有调用处,否则编译报错或运行时行为错乱。
小结
IncGUI_v2.mqh 把零散控件沉淀为库:外壳同步方法 + 标准控件类 + 配色方案。它是 MQL5 交易面板工程化的基础设施,后续任何 EA/指标界面都能直接复用。
常见问题
新增控件类(输入/微调/复选/单选/滚动条),外壳类加 SetXYDistance/SetXYSize 同步方法,并修正 Distanse/SetValueStrind 等拼写。
SetReadOnly 启用/禁用键盘输入,ReadOnly 查询当前是否只读,适合展示型字段防误改。
CColorSchemes 统一配色让面板风格一致、易换肤,是工程化 GUI 的细节基础。