文章 "MQL 作为 MQL 程序图形界面的标记工具。 第一部分"

 

新文章 MQL 作为 MQL 程序图形界面的标记工具。 第一部分已发布:

这篇论文提出了一种新的概念,即利用 MQL 结构来描述 MQL 程序的窗口界面。 特殊类将可观察的 MQL 标记转换为 GUI 元素,并允许对其进行管理,为其设置属性,并以统一的方式处理事件。 它还提供了一些运用标准库的对话框和元素标记的示例。

为什么将布局与代码分离?并用特殊的语言描述? 此处就是这种方式的基本益处。

  • 直观呈现元素和容器之间的层次关系;
  • 逻辑分组;
  • 统一定义的布局和对齐方式;
  • 轻松编写属性及其值;
  • 声明能够实现元素生存周期与控制代码的的自动生成和维护,例如创建、设置、交互和删除;
  • 泛抽象级别,即通用属性、状态和初始化/处理阶段,其能够独立于编码来开发 GUI;
  • 布局可重复(多次)使用,即同一片段可在不同的对话框中包含若干次;
  • 动态的内容实现/生成,类似于在选项卡之间切换的举动,每个选项卡都用到一组特定元素;
  • 在布局内部动态创建“控件”,在标准 MQL 函数库的情况下,将它们保存在指向基本类(例如 CWnd)的单个指针数组当中;和
  • 在交互界面设计中使用特定的图形编辑器 — 在这种情况下,描述布局的特殊格式充当在程序的外部表现与其编程语言执行部分之间充当连接链接。

对于 MQL 环境,仅针对性地解决了其中很少一些问题。 特别是,在如何设计和构造对象类一文中讲述了可视化对话框设计器。 它基于 MasterWindows 函数库工作。 只是,布局的方式和所支持的元素类型列表会受到很大限制。

在 GUI 控件里使用布局和容器:CBox 类 CGrid 类一文里,提出了一种更高级的布局系统,尽管没有视觉设计器。 它支持从CWndObj 或 CWndContainer 继承的所有标准控制元素,和其他控制元素,但仍为用户保留了创建和排布组件的例行编码。

从概念上讲,这种使用容器的方法非常先进(在几乎所有标记语言中都会提到这一点就足以说明其热门程度)。 因此,我们会看重这一点。 在我早前的文章(在交易中应用 OLAP(第二部分):可视化交互式多维数据分析结果)中,我提出了一个修订版的容器 CBox 和 CGrid,以及一些支持“橡胶”属性的控件元素。 下面,我们将利用这些扩展和改进解决自动排列元素的问题,例如标准库的对象。

作者:Stanislav Korotky

原因: