文章 "图形界面 II: 菜单项元件 (第一章)"

 

新文章 图形界面 II: 菜单项元件 (第一章)已发布:

在本系列文章的第二部分中, 我们将向您展示界面元件开发的详细过程, 例如主菜单和上下文菜单. 我们还会提到元件的绘制以及为此开发一个特别的类. 我们还将深度讨论程序事件管理, 包括自定义事件的问题.

很难找到一个没有主菜单的程序. MetaTrader终端也有这种界面元素 (参见下面的屏幕截图). 通常情况下, 菜单位于程序窗口的左上角, 并且包含若干项目. 鼠标左键点击了菜单项会弹出下拉列表, 带有程序的选项.

图 1. MetaTrader 5 终端中的主菜单

这种下拉列表被称为上下文菜单, 可以包含几种类型的项目. 让我们仔细看一下它们中的每一类:

  • 按钮(button)项目. 这是上下文菜单中最简单的元素. 通常情况下, 使用鼠标左键点击它会打开一个窗口, 包含用于设置程序的扩展功能或者包含一些信息的窗口. 也可以是非常简单的功能. 在点击了按钮项目之后, 可能会改变程序界面的外观.
  • 两种状态的复选框(checkbox)类型项目. 这个元件可以用于激活一些过程或者打开(使得可见)程序界面的某部分. 当它发生时, 此项目会改变它的外观并向应用程序的用户显示它目前的状态.
  • 一组项目. 在这个组中只有一个项目可以被启用. 这种控件被称为单选按钮或者开关. 在这篇文章中我们将称它为单选项目.
  • 调用上下文菜单的项目. 上下文菜单是从主程序文件调用的, 也可以包含一个或多个其他上下文菜单. 在点击了这样的菜单项之后, 会在右侧出现上下文菜单.

MetaEditor 代码编辑器也含有主菜单:

图 2. MetaEditor 代码编辑器中的主菜单

现在, 我们需要确定构成这样一个复杂的界面元件需要哪些类. 很明显, 把所有东西集中到一个类中是不实际的, 因为这样学习和使用这样的类将非常困难. 所以, 更合理的实现方式是, 从简单的部分组合成整个复杂结构. 让我们决定应该分为哪些部分.

作者:Anatoli Kazharski

 
对于自由职业者和卖家(市场)来说,图形界面的创建 非常重要,因为它可以吸引潜在的客户/买家。

对于我们其他人来说,其实用性和必要性并不十分明确。因此,请问作者。

因为几乎没有人会在不了解为什么有必要的情况下阅读和理解如此大量的资料。通过视频演示,每个人都可以自己决定是否需要。即使他们现在不需要,他们也会了解到将来可以强调的可能性。如果确实有兴趣,他们会仔细阅读文章并提出相关问题。

请代表 NOT 自由职业者和卖家。
 
zaskok3:
对于自由职业者和卖家(市场)来说,图形界面的创建 非常重要,因为它可以吸引潜在的客户/买家。 对于我们其他人来说,其实用性和必要性并不十分明确。因此,请问作者。 因为几乎没有人会在不了解为什么有必要的情况下阅读和理解如此大量的资料。通过视频演示,每个人都可以自己决定是否需要。即使他们现在不需要,他们也会了解到将来可以强调的可能性。如果他们真的感兴趣,就会仔细阅读文章并提出相关问题。 请代表所有自由职业者和卖家。





对于那些正在学习 MQL 和面向对象编程的人来说,我认为阅读这篇文章会很有趣。在这样的项目中学习编程语言要比学习一些抽象的示例容易得多,因为抽象的示例往往无法回答 "在哪里可以应用?

例如,我就非常需要这样一个库,但从 MQL 社区提供的内容来看,我还缺少很多使用方便的东西。

我还不会制作视频,没有它还有很多工作要做。此外,没有内容的图形界面,无论多么花哨,都没有任何意义,也就是说,它根本无法回答你的问题。每个人都必须想出为什么需要它。如果没有想法,那就证明它没有必要。

比方说,你有一些制定复杂交易策略的想法。可以是多个交易策略。创建一个图形界面 来管理它们会很方便。或者是您自己的测试器,您认为它比标准测试器更好。或者,您的程序需要从终端的文件沙箱中指定一些数据,但不是通过输入包含文件完整路径的字符串,而是通过文件导航器,在该库的帮助下,可以轻松简单地创建文件导航器。也许是某种分析程序,用于进行研究或计算,并能立即在终端的图表上实现数据可视化。建立自己的图表,不受程序所在图表时间尺度的限制。需要一个图形界面来方便地管理所有这些 "管弦乐队"。毕竟,有时您可能需要临时更改某些参数的值,切换到其他模式,打开某些数据并将其可视化。在我看来,这非常不方便,如果应用程序非常复杂,您只需创建一个简洁的图形界面即可,而不必经常进入程序代码或外部参数。

 
谢谢您,从您的回答中我意识到我可以在哪里使用它:
在实时交易过程中,我想看到测试器中的实时交易情况。也就是说,我可以通过正常方式看到战斗环境。我可以使用您的可视化工具看到测试器的实时环境。同时,我还可以看到虚拟测试器中的历史记录和交易图表。

这样就可以快速分析测试器和真实环境之间存在差异的原因:重新报价、重新劫持和其他细微差别。您的库是否能轻松创建如本文 图片所示的 界面?

库是否能绘制 2D 图表?
 

zaskok3:

在实时交易过程中,我想看看交易在测试器中是如何进行的--实时。也就是说,我可以使用标准工具查看实战环境。而我可以使用你们的可视化工具看到测试器的实时环境。同时,我还可以看到虚拟测试器中的历史记录和交易图表。

是的,但如果你自己编写了这样一个测试器。在这个库的帮助下,您可以为它创建一个图形界面。

zaskok3

这将允许您快速分析测试仪和真实情况之间出现分歧的原因:重新报价、重新加载和其他细微差别。您的库是否能轻松创建类似本文 图片上的 界面?

是的,可以。但我们必须等到整个库出版后才能实现。总共会有大约 20 篇文章,甚至更多。目前该系列只发表了 6 篇文章。

zaskok3

图书馆会绘制二维图表吗?

我已经有了一个这样的类元素,也许对您来说已经足够了。但它只是标准库中的一个稍作修改的类。当然,这对我来说也不够,我打算创建自己的图表绘制库。除非有人比我先写出来。)我希望能有类似于Excel 中实现的质量。

 
Anatoli Kazharski:
感谢您的详细解答!现在我知道了它在哪些方面可以满足交易者-开发者的实际需求,而不是为了华而不实。这些文章信息量很大,但我会详细了解,并在有能力时试用。二维图表尤其出色....
 
Anatoli Kazharski:

请为第 2 部分的文章列表添加链接:

Список статей (глав) второй части:

Графические интерфейсы II: Элемент "菜单项"。 (Глава 1)
Графические интерфейсы II: Элементы "分界线"。 и "上下文菜单"。 (Глава 2)
Графические интерфейсы II: Настройка обработчиков событий библиотеки (Глава 3)
Графические интерфейсы II: Элемент "主菜单" (Глава 4)

现在只有第一篇(第 1 章)可以点击。同样,我也希望在第 2 章和第 3 章末尾看到所有链接。

 
我收到这些错误,不知道为什么 :(