文章 "图形界面 IV: 信息界面元件 (第一章)"

 

新文章 图形界面 IV: 信息界面元件 (第一章)已发布:

在当前开发阶段,用于创建图形界面的库包含了表单以及可以附加其中的几个控件。之前已经说过,未来的文章中将有一篇专门致力于多窗口模式,现在,我们已经万事具备,我们将在下面的章节中讨论它。在本章中,我们将开发用于创建状态栏和工具提示信息界面元件的类。

在本文中,我们将创建一个简单的状态栏,不支持项目中包含上下文菜单选项。与其他界面元件类似,状态栏由几个基本对象构成:

  • 背景.
  • 项目.
  • 分隔线.


图 1. 状态栏元件的组成部分.

作者:Anatoli Kazharski

 
MetaQuotes Software Corp.:

已发表文章:图形界面 IV:界面信息元素(第 1 章)

作者:Anatoli Kazharski

阿纳托利,这一系列文章很棒,而且很有意义。您能否: 1.在每篇文章的开头列出以前的文章。网站上的搜索并不总是正确的) 2.以举例的形式总结一些知识。我想,读过你文章的人都会明白,没必要嚼烂。但如果能一下子看到有趣的结果,那就很有意思了。3.祝你好运,我期待着你的继续)
 
Alexey Volchanskiy:
阿纳托利,这一系列文章非常出色,也很有针对性。能否: 1.在每篇文章的开头列出以前的文章。网站上的搜索并不总是正确的) 2.以举例的形式总结一些知识。我想,读过你文章的人都会明白,没必要嚼烂。但如果能一下子看到有趣的结果,那就很有意思了。3.祝你好运,我期待着继续阅读)

谢谢。

你可以稍后单独写一篇文章,以创建一个带有图形界面 和所有库控件的应用程序为例。在这篇文章中,您可以提供所有文章的链接。对于那些只想在自己的 MQL 应用程序中使用程序库而不想深入了解程序库组织方式的人来说,这样做会很方便。

 
Anatoli Kazharski:

谢谢。

您可以单独撰写一篇文章,以创建一个包含所有库控件的图形用户界面应用程序为例。在这篇文章中已经包含了所有文章的链接。

+1
 
Rashid Umarov:
Deal.)
 
MetaQuotes Software Corp.:

新文章《图形界面 IV:信息界面元素(第 1 章)》已出版:

作者: Anatoli KazharskiAnatoli Kazharski

太棒了感谢 Anatoli。
 

 您好~我載了你提供的範本進行測試,但是出現了錯誤

描述:'return'-cannot convert from const pointer to nonconst pointer

文件:SplitButton.mqh

請問該怎麼解決呢?

 

Tol,我没有看过最近两个版本,但在这两个版本之前,CCtatusBar 存在一个错误:

如果状态栏 m_status_bar.ValueToItem() 在定时器中更新,那么如果主窗口最小化,状态栏就会一直挂在图表上 - 它不会最小化。我不得不以这种方式 在我的 CP 程序中持续监控:

if(m_status_bar.IsDropdown()) { m_status_bar.ValueToItem(....); }

要解决这个问题,您需要在 ValueToItem() 方法中为 CCtatusBar 添加这样一个检查

//+------------------------------------------------------------------+
//| 设置指定索引处的值 ||
//+------------------------------------------------------------------+
void CStatusBar::ValueToItem(const uint index,const string value)
  {
//--- 检查是否超出范围
   uint array_size=::ArraySize(m_items);
   if(array_size<1 || m_wnd.IsMinimized())
      return;
//--- 如果超出范围,则调整索引值
   uint correct_index=(index>=array_size)? array_size-1 : index;
//--- 设置传输文本
   m_items[correct_index].Description(value);
  }
//+------------------------------------------------------------------+

这样一切都会好起来,您也不必经常记住它并在程序中加以控制。

 
Artyom Trishkin:

...

如果在计时器中更新状态栏 m_status_bar.ValueToItem(),那么如果主窗口最小化,状态栏就会一直挂在图表上 - 而不会最小化。

...

已检查。几乎所有文章中的测试示例都有一个在计时器中更新的状态栏。所述行为未再现
 
Anatoli Kazharski:
检查。几乎所有文章中的测试示例都有一条状态行,其中计时器有更新。描述的行为没有重现

你知道,我本想录制一段视频,看看它是如何工作的,但可惜的是,在返回到您的 ValueToItem() 版本后,我也失去了这种行为。但它确实存在...也许是因为现在市场关闭了....

我还是按我建议的方式操作吧--这样我就不会在某个地方、某个时候再次遇到这个错误了。

 

我正在 4 版上试用。
行为是标准的。
我想借此机会问一下:
如何在状态栏中使用图标?

比如 连接指示器 什么的......
)