文章 "图形界面 X: 排序、重建表格和单元格中的控件 (集成编译 11)" - 页 4

 
Anatoli Kazharski:

1.当您为正在开发的 MQL 应用程序创建一个图形界面,并为其添加一些交易功能时,您可能需要在加载/重载程序时初始化程序的值。这只是一个例子,因为它应该在自定义CProgram 类中运行。稍后,当我完成程序库的开发工作后,我将展示一些更具体的示例。第二阶段将很快完成,届时将有可能展示使用该库的 MQL 应用程序的实际示例。

2.表单也应设置类似的伸展属性。

3.是的,必须的。

//---

附注: 目前最新版本的库在这篇文章中:GUIs X: Text selection in a multi-line input field (build 13)。


谢谢,顺便说一句,我注意到了一个数组溢出错误,如果你在示例 11_01 中选择最后一行并删除例如第一行,然后再次选择最后一行,你会得到以下结果:

2017.04.19 20:27:52.564 TestLibrary11_01 (RUAL,H1) 'CanvasTable.mqh' 中的数组超出范围 (1897,19)

不要注意 TestLibrary11_01 这个名称,这是示例 11_01,该库是最新版本,即第 13 版。


还有一个问题,由于默认步长太小,用什么方法来改变滚动滑块的点击步长?

 
Konstantin:


1. 谢谢,顺便说一下,我注意到一个数组溢出错误,如果在示例 11_01 选择最后一行并删除例如第一行,然后再次选择最后一行,我们会得到:2017.04.19 20:27:52.564 TestLibrary11_01 (RUAL,H1) 'CanvasTable.mqh' 中的数组超出范围 (1897,19)

2.另一个问题是,由于默认步长太小,使用什么方法来更改滚动滑块的点击步长?

1.我会检查并在下次更新时修复。

2.尚未实现。会实现的。

 

如果只需要表格功能,并且必须 绑定到CWindow 窗体,是否可以不激活?

1. 菜单控件

2.用于删除表格的按钮

3.如何更新表格中的单元格值?(问题已删除,我在SetValue 方法中看到了重绘 参数):))

4.不太清楚SetValue(const uint column_index,const uint row_index,const string value="",const uintdigits=0,const bool redraw=false) 方法,为什么将存储数据分为字符串类型和实数类型?我认为在表格中存储字符串 更好。但如果有必要,最好还是有策略地创建两个方法。

我不明白如何使用 OnInitEvent 方法,我将等待示例。

 
Konstantin:

如果只需要表格功能,并且必须 绑定到CWindow 窗体,是否可以不激活?

1. 菜单控件

2.用于删除表格的按钮

3.如何更新表格中的单元格值?

关于 OnInitEvent 方法的使用,我无法理解,我将等待示例。

1.在 MQL 应用程序 CProgram 的用户类中,您可以自行构建图形界面。因此,如果您不需要主菜单,就不要在该类中创建这些元素。

2.不需要,这是表单上的一个强制按钮。单击该按钮不会意外地将应用程序从图形中删除,因为会显示一个确认此操作的窗口。

3.请参阅本文中的示例:图形界面 X:已绘制表格的更新和代码优化(第 10 版)。简而言之,使用CCanvasTable::SetValue() 方法。


 
Anatoli Kazharski:

1.在 MQL 应用程序 CProgram 的用户类中,您可以自行构建图形界面。因此,如果您不需要主菜单,就不要在该类中创建这些元素。

2.否。这是表单上的一个强制按钮。单击该按钮不会意外地将应用程序从图形中移除,因为会显示一个确认该操作的窗口。

3.请参阅本文中的示例:图形界面 X:已绘制表格的更新和代码优化(第 10 版)。简而言之,请使用CCanvasTable::SetValue() 方法。



关于第 2 点,请为表格选择按钮,即使是 MessageBox 也有可定制的按钮集。在 Qt 中也可以更改按钮集,在标准库 MetaQuotes 中也可以更改按钮集。
 
Konstantin:

...

4.SetValue(const uint column_index,const uint row_index,const string value="",const uint digits=0,const bool redraw=false) 方法不太清楚,为什么要把存储数据分为字符串类型和实数类型?我认为最好将字符串 存储在表格中。但如果有必要,最好还是有策略地创建两个方法。

我不明白数据类型。它们都存储为字符串。数据类型是通过DataType() 方法为每一列指定的,用于排序。通过SetValue() 方法中的digits 参数,可以分别指定每个单元格分隔符后的位数
 
Konstantin:

关于第 2 点,请为表单选择按钮,即使是 MessageBox 也有可定制的按钮集。在 Qt 中也可以更改按钮集,在标准库 MetaQuotes 中也可以更改按钮集。

现在的按钮有

  1. 关闭窗口
  2. 折叠/展开窗口
  3. 工具提示。

您还需要什么?

 
Anatoli Kazharski:

现在有按钮了:

  1. 关闭窗口
  2. 折叠/展开窗口
  3. 工具提示。

您还需要什么?


我说的是它们,这组按钮应该是可变的,你并不总是需要所有这三个按钮 ))
 
Anatoli Kazharski:
我不明白数据类型。它们都存储为字符串。使用DataType() 方法可以为每一列指定数据类型,以便进行排序。通过SetValue() 方法中的digits 参数,可以分别指定每个单元格分隔符后的位数


))) 现在我明白了,DataType() 默认情况下是什么类型?还是没有默认状态,需要在将存储值添加到单元格之前确定其类型?

PS.我忘了写了,菜单中并不总是加载资源图片,不过可能是因为我坐在虚拟环境中。

 
Konstantin:

我说的是它们,这组按钮应该是可更换的,你并不总是需要所有这三个按钮 ))

2 和 3 现在已经可以不用了。在CProgram 用户类的表单创建方法中不要调用方法:

   m_window.UseRollButton();
   m_window.UseTooltipsButton();