用 MQL 编写的用户界面图库 - 页 59

 
hini #:
目录仍为俄文 ......我希望目录和文件名能有英文版,就像 KIB PROJECTS ....... 一样。这只是我的一个小小的请求!
当然,在上传到 kodobase 之前,我会将目录翻译成英文。只是我还没有时间。这是一个用于公开测试的临时版本。
 
hini #:

演示项目 1 包含在 (1) KIB 源代码 v1 中,但为什么我在图表中看不到相关窗口?

这就奇怪了。我现在就检查一下。
 
hini #:

演示项目 1 包含在 (1) KIB 源代码 v1 中,但为什么我在图表中看不到相关窗口?

检查了程序集。演示项目 1.mqh 位于此处:

(2) KIB PROJECTS\(6) DEMO PROJECTS\Demo project 1.mqh


 
我稍后会对这次发布进行全面分析。
 

昨天,在下载了新版本之后,经过大量的工作和情绪的高涨,我写了一篇非常积极的帖子,从字面上赞扬了新功能。在严格的技术讨论中,这种热情并不十分恰当。今天,我想以冷静和公正的方式来审视已实施的解决方案。我欢迎建设性的批评和客观的评价。明确第三方用户的观点对我来说非常重要。反馈意见将有助于做出调整和改进。当然,也有助于发现和修复错误。

 
让我们来了解一下这次发布的具体情况。
 
我将从新页面开始,以便重要信息能在视野中停留更长时间。
 


任务是实现用户代码与程序图形界面的 编程交互。

根据设想:

  • 在编写和调试 KIB 代码后,用户将获得所需的结果(以准备好的窗口形式)并保存项目。
  • 生成的结果是两个文件:技术 UIDATA.mqh 和 "API.mqh"。第一个文件是加载和操作界面所必需的,第二个文件是固定元素事件所必需的。
  • 用户将这两个文件从 Files 文件夹 转移到自己的项目(当前为:KIB PROJECTS\(5) USER PROJECTS\Project 1)
  • 用连接引擎和两个文件的线编译您的智能交易系统或指标:
//+------------------------------------------------------------------+
#include<(1)  KIB 1.0\(4) CONNECTIONS\KIB-DRIVE CONNECTIONS.mqh>
//--------------------------------------------------------------------
#include<(2)  KIB PROJECTS\(5) USER PROJECTS\Project 1\UIDATA.mqh>
//--------------------------------------------------------------------
#include<(2)  KIB PROJECTS\(5) USER PROJECTS\Project 1\API.mqh> 
//+------------------------------------------------------------------+
  • 将 EA 扔到图表上并查看界面。
在演示项目中,EA Shell v1.mq5 被 用作"代表 "用户程序的 示例。它与用户模拟程序所需的连接完全相同

//----------------------------------------------------------------------------------

不过,在此版本发布之前,用户只能接收子键 API文件 中交互式元素的事件。

需要强调的是用户没有很多绝对必要的软件功能

我将一一列举:

  • 以编程方式打开/关闭图形用户界面窗口。
  • 获取/设置不同类型元素的参数值。
  • 以编程方式切换元素状态:例如,根据用户操作或运行中的 "智能交易系统"/"指标 "确定的外部事件,打开/关闭、锁定/解锁元素。
  • 以编程方式获取/设置元素属性的其他值:基数、文本、框架颜色。更改图标。


这次更新几乎解决了所有任务。



让我列举一下:.
  • 用户可以通过程序调用打开/关闭图形用户界面窗口。
  • 用户可以获取/设置有参数的元素的参数值。包括非交互式元素,如表格单元格 (CELL) 和带参数 (VALUE) 的文本标签。
  • 实现了不同类型元素的两种和四种状态之间的程序切换。按钮和复选框有四种软件切换状态(开/关/锁定开/锁定关),其他元素有两种状态(锁定/解锁)。
  • 对于程序返回值/设定值,可使用小套单个元素属性。每组属性都由一个前缀表示,前缀以内含列表形式打开。它概括了一小群具有类似属性的相关元素。这种方法消除了不同类型元素的众多属性之间的混淆。
  • 以编程方式为参数设置值会将事件发送到 API 文件中元素的位置,用户可在此处编写附加代码来处理该事件。
  • 表格单元格通过折叠行和列的名称自动命名。它们在 UIDATA.mqh 文件中获得名称和功能包装。不过,由于它们不是交互式元素,因此不会出现在 API 文件中。它们可以在窗口元素列表中找到,并像所有元素一样对软件控制做出响应。


由于程序控制的可能性,以前无法实现的东西 现在都可以实现了:

1.值分派。获取一个元素的值,并将其转发给同一窗口或其他窗口中的其他元素。

2.通过软件打开警告和对话窗口。例如,在需要向用户显示紧急信息或建议时。

3.通过查询元素参数获得设置和执行状态的总体情况。可作为其他程序参数分析的补充。

4.动态重置程序设置,无需中断工作进程。

5.由于可以更改基数、文本和框架(目前还没有框架)的颜色,界面变得更具互动性和信息性。例如,当您倒退一个数值并使其进入危险区域时,带按钮的输入栏可以通过底色或文本的红色向用户发出危险信号。这一点现在很容易实现。这同样适用于滑动条。在危险值区域,可以通过编程改变滑动条的颜色。这就是互动、信息和实用的结果。


目前,我还没有完全意识到即将出现的所有可能性,我相信未来还会有更多的可能性。


接下来,让我们来看看新版本的实际操作部分。


 

事实证明,演示的实用部分相当广泛,需要时间来介绍。我将用注释、图片和 gifs 等易于理解的方式详细讲述和展示新功能。我可能要把演示分成两天进行,也就是今天和明天。没关系,你的理解能力会提高的。你也应该休息一下。


解析新版引擎功能的计划:

1.我提醒您,新文件夹和文件应在完全删除之前的 文件夹和文件 安装到 ME 中。无需进行替换。

2.我们需要打开文件(1) EA Shell v1.mq5API.mqh 无需打开其他文件。我们将使用与演示项目 1.mqh 相同的界面和熟悉的窗口 第一个文件应放在专家文件夹中(我认为已经在那里了),第二个文件可以在这里找到:



该文件夹中的 UIDATA.mqh 和 API.mqh 文件已包含您需要的所有内容。无需在构造函数中生成新文件。


主要工作将在文件(1) EA Shell v1.mq5 的 函数 _OnInit() 和 _OnTimer 中进行,但有时我们也会查看文件API.mqh。 如果您好奇,可以打开 UIDATA.mqh 文件,看看窗口和元素封装函数是什么样的。它们被打印在最底部。否则,工作中不需要这个文件,可以关闭。


我们将讨论的主题有

1. 浏览 intellisense 列表并选择正确的窗口函数。

2.以编程方式打开和关闭窗口。

3. 在 intellisense 列表中确定方向,并在正确的窗口中选择正确的功能。

4. 在单个元素属性列表中导航。

5.解析元素名称和窗口封装函数。

6. 所选元素的参数值返回 到其类型的变量中。考虑几种不同元素的三种类型。

7.为不同类型的元素设置参数值。让我们看看这些值将如何显示在这些元素的界面窗口中。

8.返回一个元素的参数值, 修改 并将 该值转发给 另一个元素。考虑不同类型的元素和数值,测试不同类型元素在不同窗口中的转发。

9.返回前一个值 (_V_LAST)。何时以及在何种情况下需要最后一个值(不要与当前值混淆)。

10.测试不同类型元素的 ON/OFF/LOCK_ON/LOCK_OFF/LOCK/UNLOCK 状态的设置。

11.让我们尝试将不同类型元素(例如,输入框与按钮和滑块)的值变化联系起来并使其同步。假设一个元素(手动或软件)的值发生变化时,第二个元素的值也会相应变化。

12.让我们尝试通过封装函数以编程方式重置滑块和带按钮输入框的范围边界。我还没有时间进行测试,但有迹象表明这将有效。不过,让我们拭目以待。

13.让我们尝试通过封装函数返回元素状态。它包含在功能中,但我还没来得及测试。所以,让我们拭目以待......结果未知。

14.我们来获取和设置文本和元素基色的颜色。我们可以尝试将这些颜色与一些简单的事件或值边界联系起来。

15.我会告诉你更多如何浏览和阅读新的 API 文件打印输出。


目前就介绍到这里,我们还可以继续添加内容。

 

让我们开始考虑上述主题。

1.在 intellisense 列表中确定方向并选择所需窗口的功能:

键入 w_,会 出现本项目用户界面窗口的功能列表。


2- 在 intellisense 列表中定位并从选定窗口中选择所需的功能:

选择窗口后,我们查看其编号。

我们擦除 w 后面的破折号并打印其编号。

这是该窗口内所有交互列表的前缀:


//-------------------------------------------------------------------------------------------------------------------------------------------

该 gif 展示了这一过程的简便性和动态性:



接下来,让我们看看如何打开和关闭图形用户界面窗口。