文章 "图形界面 X: 升级渲染表格及代码优化 (集成编译 10)"

 

新文章 图形界面 X: 升级渲染表格及代码优化 (集成编译 10)已发布:

我们继续为渲染表格 (CCanvasTable) 完善新的功能。表格现在将具有: 当悬浮时高亮显示; 为每个单元格添加一个图标数组的能力, 以及一种切换它们的方法; 在运行时设置或修改单元格文本的能力等等。

结果如下:

 图例. 2. 悬浮时高亮显示表格行的演示。

图例. 2. 悬浮时高亮显示表格行的演示。 

 

作者:Anatoli Kazharski

 
画桌上 有趣的补充。老实说,我对这篇文章的期望有些不同。不,我一点也不失望(恰恰相反),我只是像往常一样想错了。

我原以为,如果你转而去实现一个绘制界面,你会概述其概念,提出其思想,描述新技术。我还以为你们会从重新制作以前创建的功能性....。

然而,目前并没有出现这种情况。您还没有制定出图形用户界面的概念,也没有开始全面的重新设计。也许,这种全局性的重新设计将是循序渐进的,从一篇文章到另一篇文章,而不是像我想象的那样具有革命性。这就是为什么我说我的期望是错误的。

你们出人意料地避免了对图书馆的全面重新设计,这让我感到非常奇怪。

我对这种开发方式的定义如下:"开发是在一个平面上的逐步扩展,在这个平面上,每个局部问题都用自己的局部方法来解决。普遍化、一般化和压缩解决方案都不适用。大规模的革命性变革是不利的。值得坚持的是普遍接受的标准和风格,而不是与之相冲突。".

我的发展风格:"发展是一种渐进的普遍化,它导致新的局部任务的解决不是在方法层面上进行,而是在方法中的个别路线层面上进行。即便如此,也并非总是如此。新的实体越来越少,而旧的机制却越来越完善。新的局部任务正在逐步加速。全局性的重新设计是困难的,也是不可避免的,但却是必要的"。

在接下来的文章中,我将等待您的绘图界面技术概念与我的概念进行比较。

顺便说一句,如果您有兴趣,我可以帮您勾勒一下。

祝您好运。
 
我想在我的发展观中补充一句:"为了绝对的效率,牺牲传统的方法、标准和风格是合理的。如果它们阻碍了自由创造性的发展,就可以忽略、打破和改变"。
 
Реter Konow:
...

也许,这种全球再分配将是渐进的,从一篇文章到另一篇文章,而不是像我想象的那样是革命性的。

...


是的,没错。
 
@Anatoli Kazharski 我想澄清一下,什么是代码优化?我问这个是因为使用连接的库进行编译有时需要 20 秒。还是应该这样?
 
Alexander Fedosov:
@Anatoli Kazharski 我想澄清一下,什么是代码优化?我问这个是因为使用连接的库进行编译有时需要 20 秒。应该是这样吗?


您的情况是,在开发 MQL 应用程序时,将"MetaTrader 5/Config/metaeditor.ini"文件中的 优化 参数设置为零,如下所示:

...
[Experts]
Author=Copyright 2015, MetaQuotes Software Corp.
Address=http://www.mql5.com
Optimize=0
...

//---

这样一切都会很快编译完成:

0 error(s), 0 warning(s), compile time: 351 msec                1       1

//---

这不是文章的意思。在某些情况下,它意味着提高性能,在某些情况下,它意味着部分通用化(将重复的代码片段打包成单独的方法,并将它们放入单独的类)。

 
出于某种原因,第 10 条智能交易系统中没有一个会停留在图表上,几秒钟后,只显示了一个形状,它就会自己从图表上移除。日志中显示 "2017.03.06 08:40:45.467 TestLibrary10 (SBER,D1) CWndEvents::CheckExpertSubwindowNumber > 删除专家子窗口会导致专家被删除!",并进一步显示 "2017.03.06 08:40:45.467 TestLibrary10 (SBER,D1) ExpertRemove()函数 被调用"。原因是什么?


 
Alexander:
出于某种原因,第 10 条智能交易系统中没有一个会停留在图表上,几秒钟后,只显示了一个形状,它就会自己从图表上移除。日志中显示 "2017.03.06 08:40:45.467 TestLibrary10 (SBER,D1) CWndEvents::CheckExpertSubwindowNumber > 删除专家子窗口会导致专家被删除!",并进一步显示 "2017.03.06 08:40:45.467 TestLibrary10 (SBER,D1) ExpertRemove()函数 被调用"。原因是什么?

我再次检查了(我所知道的)可能发生这种情况的所有可能情况,但未能重现。

是文章中的两个测试智能交易系统都出现了这种情况,还是只有TestLibrary10 出现了这种情况?其他文章中的测试智能交易系统显示了什么?

 
Anatoli Kazharski:

我再次检查了(我所知道的)可能发生这种情况的所有可能情况,但未能重现。

是文章中的两个测试专家都出现了这种情况,还是只有TestLibrary10 出现了这种情况?其他文章中的测试智能交易系统显示了什么?


第 10 条文件夹中的所有智能交易系统都显示这种行为,即从TestLibrary7 到 TestLibrary10。
 
Alexander:

第 10 条文件夹中的所有 EA(即从TestLibrary7 到 TestLibrary10)都显示了这种行为。
重现。当图表上的子窗口中有指标时,问题就会出现。以前没有出现过这种情况。我将对此进行研究。感谢您的留言。
 
Anatoli Kazharski:
重现。当图表的子窗口中有指标时,问题就会出现。以前没有这种情况。我将对此进行研究。感谢您的留言。

当我在 TestLibrary07 Expert Advisor 的 MainWindow.mqh 文件中注释了第 22 行和第 23 行 //m_window.AutoXResizeMode(true); 和 //m_window.AutoYResizeMode(true); 后,该 Expert Advisor 不知为何开始正常工作。