文章 "图形界面 X: 简单快速开发库的更新 (版本 2)" - 页 2 12345 新评论 Anatoli Kazharski 2016.08.07 19:20 #11 Alexey Oreshkin:也许我的代码被删除了,现在还不能确定。... 图形界面 I:准备库结构(第 1 章) >>>注意上面代码列表中函数前面的双冒号。事实上,不加冒号也能正常工作。但在编程中,在语言的 系统函数 前加双冒号被认为是一种好的做法。这样可以清楚地表明该函数是一个系统函数。阿列克谢-奥列什金当我关闭指标创建的带十字的窗口时,就会出现错误。我稍微修改了位于此处的示例中的 MainWindow.mqh 文件:Indicators\Article 10\SeparateWindow。我将通过额外检查排除错误。修复程序将在下次更新中发布。重放失败。在MainWindow.mqh 文件中做了哪些修改?阿列克谢-奥列什金我也不知道如何删除已创建表中的一行?目前没有办法。下一版程序库中会有。以后就可以在表格和列表中添加和删除行了。 Alexey Oreshkin 2016.08.07 19:43 #12 我一定是删除了一些不必要的东西。我附上了文件。另外,我能否为表格中的每一列设置不同的宽度? 附加的文件: MainWindow.mqh 8 kb Program.mqh 6 kb SeparateWindow.mq5 3 kb Anatoli Kazharski 2016.08.07 20:19 #13 Alexey Oreshkin:我一定是删除了一些不必要的东西。我附上了文件。另外,我能否为表格中的每一列设置不同的宽度?原因是您在元素库中添加了两次相同表格的对象。首先是在CProgram::CreateTable()表格创建 方法中,应该在这里完成,然后是在您的CProgram::ModifyTable() 方法中。删除下面代码列表中用红色 标出的一行。//+------------------------------------------------------------------+ //|| 创建符号表| //+------------------------------------------------------------------+ bool CProgram::ModifyTable(int id) { int r=1; switch(id){ case 0: for(int c=0;c<COLUMNS2_TOTAL;c++) for(r=1;r<ROWS2_TOTAL;r++) m_table.SetValue(c,r,"rb1 "+(string)c+" "+(string)r); break; case 1: for(int c=0;c<COLUMNS2_TOTAL;c++) for(r=1;r<ROWS2_TOTAL-5;r++) m_table.SetValue(c,r,"rb2 "+(string)c+" "+(string)r); break; case 3: for(int c=0;c<COLUMNS2_TOTAL;c++) for(r=1;r<ROWS2_TOTAL-10;r++) m_table.SetValue(c,r,"rb3 "+(string)c+" "+(string)r); break; } for(int c=0;c<COLUMNS2_TOTAL;c++) for(int rr=r;rr<ROWS2_TOTAL;rr++) m_table.SetValue(c,rr,""); //-- 更新表格以显示变化 m_table.UpdateTable(); //--- 将对象添加到对象组的通用数组中 CWndContainer::AddToElementsArray(0,m_table); return(true); } //---从图表中删除方案或重新加载方案时,例如更改时间框架或符号时,会再次尝试删除之前已经删除的项目。删除表格对象时,数组被释放,再次调用删除项目的方法时会出错。阿列克谢-奥列什金p.s. 能否为表格中的每一列设置不同的宽度?在这种类型的表格(CTable)中不行。只有在CCanvasTable 类型的表格中才能设置列宽。但目前这种类型的表格还有很多其他限制,很可能不适合您。CCanvasTable 类型表格的可能性将得到扩展。 Alexey Oreshkin 2016.08.07 21:25 #14 Anatoli Kazharski:原因是您在元素库中添加了同一个表对象两次。首先是在CProgram::CreateTable() 方法中,应该在这里添加,然后是在CProgram::ModifyTable() 方法中。删除下面代码列表中用红色 标出的一行。 我试试CCanvasTable,也许能行。 谢谢!附注:如果不能删除表中的行,我可以删除整个表,然后重新创建我需要的表。我也没有找到任何删除方法。我还不能删除表吗?p.s2:由于我无法创建不同宽度的表格列,因此将两个表格相邻放置是合乎逻辑的,但据我了解,我无法这样做,因为表格会自动扩展到右边界。有一个AutoXResizeMode 方法,但它还不起作用? 当设置为 false 时,不会发生任何变化。 Anatoli Kazharski 2016.08.08 09:02 #15 Alexey Oreshkin:...附注:如果我不能删除表中的行,我可以删除整个表,然后重新创建我需要的表。我也没有找到任何删除方法。我还不能删除表格?现在所有图形用户界面 元素都是一次性创建的,然后可以使用Show() 和Hide() 方法控制它们的可见性。阿列克谢-奥列什金p.s2: 因为我无法创建不同宽度的表格列,所以将两个表格相邻放置是合乎逻辑的,但我发现我做不到,因为表格会自动扩展到右边界。有一个AutoXResizeMode 方法,但它还不起作用吗? 当设置为 false 时,不会发生任何变化。使用XSize() 方法设置表格的宽度。示例m_table.XSize(300); Alexey Oreshkin 2016.08.08 13:54 #16 感谢您的回答。 还有几个问题:1.如果数据不适合放在表格单元格中,将来是否有计划在该单元格中制作工具提示或勾选器?2.是否有可能在某些表格中禁用水平滚动?p.s: 当我们创建一个有 5 列的表格,但试图显示更多列时,就会出现错误。我同意这个选项很傻,但它是必要的。尤其是当表格将来可能成为动态表格时。附注 2:"显示 "和 "隐藏 "方法工作得非常好,不允许临时更改表格,而是显示必要的表格。在每个标签页上,我都创建了必要的表格,这些表格与单选按钮绑定,当它们被激活时,必要的表格就会显示,而那些不需要的表格就会隐藏。这里一切正常。但出于某种原因,我无法在创建无关表格后立即隐藏它们。我认为这就是滚动条 无法正常工作的原因,但只要点击一下单选按钮,所有不相关的表格都会被隐藏,一切都会开始正常工作。 Anatoli Kazharski 2016.08.08 20:23 #17 Alexey Oreshkin:1.如果数据不适合放在表格单元格中,将来是否有计划在该单元格中制作工具提示或提示符?已添加到未来更新列表中。我将制作表格中的工具提示模式。阿列克谢-奥列什金2.能否在某些表格中禁用水平滚动?当表格的可见部分小于总部分时,会出现滚动条。阿列克谢-奥列什金当我们创建一个有 5 列的表格并试图显示更多列时,就会出现错误。我同意这个选项很傻,但我们需要检查一下。尤其是当表格将来可能成为动态表格时。我已经做了更正。将在下一次更新中提供。阿列克谢-奥列什金p.s2:"显示 "和 "隐藏 "方法效果很好,不需要临时更改表格,只需显示需要的表格即可。我在每个选项卡上创建了必要的表格,这些表格与单选按钮绑定,激活后,必要的表格就会显示,不激活的表格就会隐藏。这里一切正常。但出于某种原因,我无法在创建无关表格后立即隐藏它们。因此,我认为滚动条无法正常工作,但只要点击一次单选按钮,所有不必要的东西都被隐藏起来,一切就都开始正常工作了。在更新选项卡元素后再隐藏它们://--- 显示活动选项卡的项目 m_tabs.ShowTabElements(); //--- 隐藏表格 ...如果还不行,请把你的代码发给我,我帮你看看。 Alexey Oreshkin 2016.08.08 22:49 #18 在启动时,滚动条 几乎不起作用,但如果我使用单选按钮更新滚动条,一切都会正常工作。当切换到新标签页时,也会出现同样的问题,直到我点击单选按钮为止。,我已将存档发送到 PM。 Anatoli Kazharski 2016.08.09 10:45 #19 Alexey Oreshkin: 在启动时,滚动条几乎不起作用,但如果我使用单选按钮更新滚动条,一切都会正常工作。当切换到新标签页时,也会出现同样的问题,直到我点击单选按钮。 ,我已将存档发送到 PM。我查看了您的文件。问题很明显。滚动条 之间存在冲突,滚动条 在可见表格中一个位于另一个之上。问题在于,当您切换选项卡时,分配给当前选定选项卡的所有项目都会变为可见。由于你的所有表格都是一个在另一个上面,所以你没有看到它。请看下面的截图,为了清晰起见,我改变了该选项卡中两个表格的坐标://---我们需要一个事件来告诉我们切换了标签页。然后在自定义类处理程序中接收该事件,并采取必要的操作。在您的例子中,您可以获取所选单选按钮的索引,然后显示与之相关联的表格,并隐藏其他表格。 目前,切换选项卡时不会生成这样的事件。下一次库更新时将会提供。 Alexey Oreshkin 2016.08.09 11:18 #20 何时等待更新? 12345 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
也许我的代码被删除了,现在还不能确定。
...
图形界面 I:准备库结构(第 1 章) >>>
注意上面代码列表中函数前面的双冒号。事实上,不加冒号也能正常工作。但在编程中,在语言的 系统函数 前加双冒号被认为是一种好的做法。这样可以清楚地表明该函数是一个系统函数。
当我关闭指标创建的带十字的窗口时,就会出现错误。我稍微修改了位于此处的示例中的 MainWindow.mqh 文件:Indicators\Article 10\SeparateWindow。
我将通过额外检查排除错误。修复程序将在下次更新中发布。重放失败。在MainWindow.mqh 文件中做了哪些修改?
我也不知道如何删除已创建表中的一行?
目前没有办法。下一版程序库中会有。以后就可以在表格和列表中添加和删除行了。
我一定是删除了一些不必要的东西。我附上了文件。
另外,我能否为表格中的每一列设置不同的宽度?
我一定是删除了一些不必要的东西。我附上了文件。
另外,我能否为表格中的每一列设置不同的宽度?
原因是您在元素库中添加了两次相同表格的对象。首先是在CProgram::CreateTable()表格创建 方法中,应该在这里完成,然后是在您的CProgram::ModifyTable() 方法中。删除下面代码列表中用红色 标出的一行。
//---
从图表中删除方案或重新加载方案时,例如更改时间框架或符号时,会再次尝试删除之前已经删除的项目。删除表格对象时,数组被释放,再次调用删除项目的方法时会出错。
p.s. 能否为表格中的每一列设置不同的宽度?
在这种类型的表格(CTable)中不行。只有在CCanvasTable 类型的表格中才能设置列宽。但目前这种类型的表格还有很多其他限制,很可能不适合您。CCanvasTable 类型表格的可能性将得到扩展。
原因是您在元素库中添加了同一个表对象两次。首先是在CProgram::CreateTable() 方法中,应该在这里添加,然后是在CProgram::ModifyTable() 方法中。删除下面代码列表中用红色 标出的一行。
我试试CCanvasTable,也许能行。
谢谢!
附注:如果不能删除表中的行,我可以删除整个表,然后重新创建我需要的表。我也没有找到任何删除方法。我还不能删除表吗?
p.s2:由于我无法创建不同宽度的表格列,因此将两个表格相邻放置是合乎逻辑的,但据我了解,我无法这样做,因为表格会自动扩展到右边界。有一个AutoXResizeMode 方法,但它还不起作用? 当设置为 false 时,不会发生任何变化。
...
附注:如果我不能删除表中的行,我可以删除整个表,然后重新创建我需要的表。我也没有找到任何删除方法。我还不能删除表格?
现在所有图形用户界面 元素都是一次性创建的,然后可以使用Show() 和Hide() 方法控制它们的可见性。
阿列克谢-奥列什金
p.s2: 因为我无法创建不同宽度的表格列,所以将两个表格相邻放置是合乎逻辑的,但我发现我做不到,因为表格会自动扩展到右边界。有一个AutoXResizeMode 方法,但它还不起作用吗? 当设置为 false 时,不会发生任何变化。
使用XSize() 方法设置表格的宽度。
示例
m_table.XSize(300);感谢您的回答。
还有几个问题:
1.如果数据不适合放在表格单元格中,将来是否有计划在该单元格中制作工具提示或勾选器?
2.是否有可能在某些表格中禁用水平滚动?
p.s:
当我们创建一个有 5 列的表格,但试图显示更多列时,就会出现错误。我同意这个选项很傻,但它是必要的。尤其是当表格将来可能成为动态表格时。
附注 2:"显示 "和 "隐藏 "方法工作得非常好,不允许临时更改表格,而是显示必要的表格。在每个标签页上,我都创建了必要的表格,这些表格与单选按钮绑定,当它们被激活时,必要的表格就会显示,而那些不需要的表格就会隐藏。这里一切正常。但出于某种原因,我无法在创建无关表格后立即隐藏它们。我认为这就是滚动条 无法正常工作的原因,但只要点击一下单选按钮,所有不相关的表格都会被隐藏,一切都会开始正常工作。
1.如果数据不适合放在表格单元格中,将来是否有计划在该单元格中制作工具提示或提示符?
已添加到未来更新列表中。我将制作表格中的工具提示模式。
2.能否在某些表格中禁用水平滚动?
当表格的可见部分小于总部分时,会出现滚动条。
当我们创建一个有 5 列的表格并试图显示更多列时,就会出现错误。我同意这个选项很傻,但我们需要检查一下。尤其是当表格将来可能成为动态表格时。
我已经做了更正。将在下一次更新中提供。
p.s2:"显示 "和 "隐藏 "方法效果很好,不需要临时更改表格,只需显示需要的表格即可。我在每个选项卡上创建了必要的表格,这些表格与单选按钮绑定,激活后,必要的表格就会显示,不激活的表格就会隐藏。这里一切正常。但出于某种原因,我无法在创建无关表格后立即隐藏它们。因此,我认为滚动条无法正常工作,但只要点击一次单选按钮,所有不必要的东西都被隐藏起来,一切就都开始正常工作了。
在更新选项卡元素后再隐藏它们:
如果还不行,请把你的代码发给我,我帮你看看。
,我已将存档发送到 PM。
在启动时,滚动条几乎不起作用,但如果我使用单选按钮更新滚动条,一切都会正常工作。当切换到新标签页时,也会出现同样的问题,直到我点击单选按钮。 ,我已将存档发送到 PM。
我查看了您的文件。问题很明显。滚动条 之间存在冲突,滚动条 在可见表格中一个位于另一个之上。问题在于,当您切换选项卡时,分配给当前选定选项卡的所有项目都会变为可见。由于你的所有表格都是一个在另一个上面,所以你没有看到它。请看下面的截图,为了清晰起见,我改变了该选项卡中两个表格的坐标:
//---
我们需要一个事件来告诉我们切换了标签页。然后在自定义类处理程序中接收该事件,并采取必要的操作。在您的例子中,您可以获取所选单选按钮的索引,然后显示与之相关联的表格,并隐藏其他表格。
目前,切换选项卡时不会生成这样的事件。下一次库更新时将会提供。