文章 "MQL 作为 MQL 程序图形界面的标记工具(第三部)。 窗体设计师"

 

新文章 MQL 作为 MQL 程序图形界面的标记工具(第三部)。 窗体设计师已发布:

在篇论文当中,我们将用 MQL 的结构完成构建 MQL 程序窗口界面的概念讲述。 专业的图形编辑器能够交互式地设置由 GUI 元素的基本类组成的布局,然后将其以 MQL 描述导出,从而可在您的 MQL 项目中使用。 此片论文介绍了编辑器的内部设计和用户指南。 附带源代码。

编辑器是为标准函数库界面元素类而设计的。 若要为其他函数库创建类似的工具,您必须依据提议的标记系统为所有抽象实体编写特定实现。 同时,您应该遵照标准库的标记类实现作为指导。

应当注意,“标准组件库”定义实际上并不正确,因为关乎之前文章的上下文,我们必须对其进行大量修改,并将其放置在并行版本分支的 ControlsPlus 文件夹中。 于此,我们将继续使用和修改它。

我们列出编辑器支持的元素类型。

  • 带有水平(CBoxH)和垂直(CBoxV)方向的容器 CBox,
  • CButton,
  • CEdit 输入框,
  • CLabel,
  • SpinEditResizable,
  • 日历选择器 CDatePicker,
  • 下拉菜单 ComboBoxResizable,
  • 列表 ListViewResizable,
  • CheckGroupResizable, 和
  • RadioGroupResizable.

所有类都确保能够自适应调整大小(某些标准类型在一开始就可以做到,而我们必须对其他类型进行相当大的更改)。

编辑窗体

编辑窗体

作者:Stanislav Korotky

 
太震撼了
 
祝贺你干得好,文章写得好。
 
终于有一场像样的比赛了(我指的是结果)。现在,请抓紧时间!)))))
 

可视化编辑器仍应包括对元素的手动编辑--拉伸、移动、输入文本、复制等。最好能有辅助标记。

虽然我不知道作者是如何实现其他要求的,因为我不了解他的技术,但这个编辑器还是很有前途的。它 "站在 "标准库 的 "肩膀 "上,一方面有力地推动了标准库 的发展,另一方面又让你继承了标准库 的局限性。它不是为大规模改造而设计的...很多功能都需要从上面添加。

未来编辑器的需求列表

1.手动定制元素。

2.2. 复制元素。

3.同时对一组元素进行属性管理。

4.辅助框架

5.多窗口模式

6.创建不同类型的窗口

7.支持窗口属性:"始终位于顶部"、屏蔽其他窗口、有/无最小化。

8.并行编辑窗口

9.删除窗口

目前就这些。


ZY:据我所知,SB 控制器由 MT 对象组成,这一方面简化了与元素交互和手动调整的系统(很久以前我就有过一个基于 MT 对象的编辑器,制作起来并不困难),另一方面(如果您接受这种简化)--又失去了 kanvas 的所有优势(其中包括速度、视觉效果等)。也就是说,在创建编辑器时使用 SB 的 "兴奋剂效应 "严重限制了编辑器的发展。但是,让我们看看...

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.
 
有趣的是,即使没有 kanvas,如果作者解决了手动设置元素的问题,也可以进行辅助标记。我就是这么做的。当然,画布上的标记在视觉上更酷,但以 Sharpe 编辑器为例,标记虽然稀少,却很实用。只有几行有助于定位控制器。做完标记后,我仔细研究了一下,结果让我大吃一惊。

任务栏也需要制作。最好是
 
非常好
祝贺您

随着时间的推移,MT5 变得越来越好,这真是令人惊叹。
我认为在不久的将来,任何人都有能力创建和设置任何图形界面,满足您的需求。
 
在代码库中发布了通过声明式 MQL 布局设计构建图形用户界面的新程序示例 -ChartBrowser
ChartBrowser
ChartBrowser
  • www.mql5.com
This is an utility which allows you to list all open charts, indicators, expert advisers, and scripts in alphabetic order, and switch between them.
 

您好、

我的一台笔记本电脑就遇到了这种情况。

除了文本标签外,其他一切看起来都很小。

TerminalInfoInteger(TERMINAL_SCREEN_DPI)" 的值是 192。

你知道如何解决这个问题吗?我以为程序库会根据我的屏幕设置自动调整。


 
Guilherme Mendonca #:

你好、

我的一台笔记本电脑就遇到了这种情况。

除了文本标签外,所有东西看起来都很小。

TerminalInfoInteger(TERMINAL_SCREEN_DPI)" 的值是 192。

你知道如何解决这个问题吗?我以为程序库会根据我的屏幕设置自动调整。


可惜我没有办法在不同环境下进行测试。这个库是基于标准控件的(有一些与 dpi 无关的小修正)。因此,如果它莫名其妙地搞砸了,这似乎是一个常见问题,而不是程序库的问题。

但我认为您应该首先检查 Windows 的缩放比例设置。

 
Guilherme Mendonca #:

我的一台笔记本电脑就遇到了这种情况。

我有个想法--试着将 Defines.mqh 补丁改为:

#define  CONTROLS_FONT_SIZE                  (-10)

添加了减号。

或者另一个想法:

#define  CONTROLS_FONT_SIZE                  ((int)(10.0 / (TerminalInfoInteger(TERMINAL_SCREEN_DPI) / 96.0)))
让我知道这两种变体是否有帮助。