用 MQL 编写的用户界面图库 - 页 45 1...383940414243444546474849505152...82 新评论 Реter Konow 2024.07.16 12:15 #441 我想补充一下为什么不能简单地通过与之前记录的图表尺寸 进行比较来检查图表尺寸。在切换图表时,图表尺寸的 ChartGetInteger() 函数会发送不正确的值,这就会使算法 "认为 "尺寸发生了变化,从而使任务栏从其位置 "跳转"。我费了九牛二虎之力才解决了这个问题。现在我将检查在这些事件中向 ChartGetInteger() 函数报告的图表尺寸值。 Реter Konow 2024.07.16 12:21 #442 也就是说,在切换图表时,尺寸不会改变,但 ChartChange 事件会发生,但 ChartGetInteger() 函数不知为何总是报告尺寸为 480(宽)和 167(高)。在任何图表尺寸 下都是如此。(版本 2470,我还没有检查新版本)。 Реter Konow 2024.07.16 12:29 #443 在新版本(4435)中,当切换图表时,ChartGetInteger() 函数会返回宽度为 490、高度为 103 的值。实际图表尺寸为 宽 1068、高 438。请注意,切换图表时尺寸不会改变。 Реter Konow 2024.07.16 12:41 #444 基于这些条件,我将继续研究传入事件的特殊性,以区分图表尺寸 的真实变化和错误变化。当开发人员修复该功能时,我将简化代码。:) Реter Konow 2024.07.16 13:16 #445 测试了不同的图表大小调整 事件。问题似乎只出现在图表切换时,在这种情况下不会发生实际的大小调整。但是 ChartGetInteger() 函数持续报告 490 到 103。其他事件一切正常。任务栏问题将在下一版本中修复。 hini 2024.07.16 13:57 #446 Реter Konow #: 测试了不同的图表大小调整 事件。问题似乎只出现在图表切换时,在这种情况下不会发生实际的大小调整。但是 ChartGetInteger() 函数持续报告 490 到 103。其他事件一切正常。任务栏问题将在下一版本中修复。 辛苦了!期待您的工作。 Реter Konow 2024.07.16 14:05 #447 hini #: 感谢您所做的工作!期待看到你们的作品。 谢谢你们 Edgar Akhmadeev 2024.07.16 14:05 #448 清理、重新编译、重新安装。 我将列出我注意到的问题,排名不分先后: 1.打开窗口后,任务栏上 没有任何 显示。最小化窗口后,按钮出现。展开后也不会消失。如果有 "像在 Windows 中一样 "的行为概念,它应该立即出现。 2.2. 在动态窗口中,当光标移动到最小化和最大化按钮上时,只要光标还在窗口内,它们就会保持突出显示。 3.在动态窗口 中, 标题在展开 后 变为灰色,返回后保持灰色,只有在最小化和返回后才恢复颜色。 4.4. 展开后的窗口不会隐藏图表上的时间和价格刻度。 5.通过 "i, AT, _X2X, "MF", 5, _Y2H, "Report", 5 "命令放置在"H_TAB, "Report "下的表格会忽略左边缘设置。与"i,AT,_X2X,"MF",5,_Y2Y,"MF",20,"相同。 6.最重要的是动态窗口不允许使用V_BOX,这彻底改变了我的设计。为了便于定位和滚动,两个表格被放在各自的框中。现在我不得不直接在 "MF "上绘制它们,因此无法将下层表格紧靠在上层表格的下方。绑定"i,AT,_X2X,"MF",5,_Y2H,"Table1",5、"不起作用,因为组名 Table1 不是元素。我设法绑定到表的最后一行,但对于动态表来说,这不是一个选项。我还不知道如何引用表而不是组。如果要以编程方式向表中添加行,那么就必须使用表格的寻址方式。 7.还有一件事。您的动态窗口是一个可以展开和折叠的对等窗口。我想要的不是窗口,而是桌面。就像你的构造函数一样。这样它 a) 一次性展开,覆盖整个图表 b) 没有页眉和框架(只有任务栏) c) 不能折叠 d) 可以像普通窗口一样放置项目。 也就是说,将 DINAMIC 替换为 FULLSCREEN 或 DESKTOP。您已经有了这样做的基础。 Реter Konow 2024.07.16 17:06 #449 Edgar Akhmadeev #:... 感谢您的详细意见。 我会尝试用动态窗口解决您的问题--表格排列的复杂性。 让我这样说吧--动态全屏窗口在用户图形用户界面中具有特殊用途,因此有其特定的局限性。它不像 "设置 "窗口那样具有通用性。这也是合乎逻辑的。毕竟,所有专门 "定制 "的东西都会受到某种限制。 不过,动态表格或无限列表可以与动态窗口中的其他元素组组合在一起,它们不需要单独的 "唯一 "空间,尽管我认为这样更方便。如何实现表格与其他组的兼容性?- 这是一个技术问题。 为了实验起见,我将使用您的表格,并尝试将它们插入全屏窗口。当然,我需要修改代码... 结果 (点击图片) 我先不公布代码,因为老实说,一切都很 "原始"。我不得不使用一些技巧和 "拐杖"。但是,正如您所看到的,一切都可以正常工作。 Реter Konow 2024.07.16 17:32 #450 Edgar Akhmadeev #:...7.还有一件事。您的动态窗口是一个可以展开和最小化的对等窗口。我想要的不是窗口,而是桌面。就像你的构造函数一样。这样它 a) 打开后立即展开,覆盖整个图表 b) 没有页眉和框架(只有任务栏) c) 不能折叠 d) 可以像普通窗口一样放置元素也就是说,将 DINAMIC 替换为 FULLSCREEN 或 DESKTOP。您已经有了这样做的基础。在动态窗口发布后,我会考虑这个选项,因为我认为在笔记本电脑屏幕较小的情况下,这个选项是合理的。 1...383940414243444546474849505152...82 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
测试了不同的图表大小调整 事件。问题似乎只出现在图表切换时,在这种情况下不会发生实际的大小调整。但是 ChartGetInteger() 函数持续报告 490 到 103。
感谢您所做的工作!期待看到你们的作品。
清理、重新编译、重新安装。
我将列出我注意到的问题,排名不分先后:
1.打开窗口后,任务栏上 没有任何 显示。最小化窗口后,按钮出现。展开后也不会消失。如果有 "像在 Windows 中一样 "的行为概念,它应该立即出现。
2.2. 在动态窗口中,当光标移动到最小化和最大化按钮上时,只要光标还在窗口内,它们就会保持突出显示。
3.在动态窗口 中, 标题在展开 后 变为灰色,返回后保持灰色,只有在最小化和返回后才恢复颜色。
4.4. 展开后的窗口不会隐藏图表上的时间和价格刻度。
5.通过 "i, AT, _X2X, "MF", 5, _Y2H, "Report", 5 "命令放置在"H_TAB, "Report "下的表格会忽略左边缘设置。与"i,AT,_X2X,"MF",5,_Y2Y,"MF",20,"相同。
6.最重要的是动态窗口不允许使用V_BOX,这彻底改变了我的设计。为了便于定位和滚动,两个表格被放在各自的框中。现在我不得不直接在 "MF "上绘制它们,因此无法将下层表格紧靠在上层表格的下方。绑定"i,AT,_X2X,"MF",5,_Y2H,"Table1",5、"不起作用,因为组名 Table1 不是元素。我设法绑定到表的最后一行,但对于动态表来说,这不是一个选项。我还不知道如何引用表而不是组。如果要以编程方式向表中添加行,那么就必须使用表格的寻址方式。
7.还有一件事。您的动态窗口是一个可以展开和折叠的对等窗口。我想要的不是窗口,而是桌面。就像你的构造函数一样。这样它
a) 一次性展开,覆盖整个图表
b) 没有页眉和框架(只有任务栏)
c) 不能折叠
d) 可以像普通窗口一样放置项目。
也就是说,将 DINAMIC 替换为 FULLSCREEN 或 DESKTOP。您已经有了这样做的基础。
...
感谢您的详细意见。
我会尝试用动态窗口解决您的问题--表格排列的复杂性。
让我这样说吧--动态全屏窗口在用户图形用户界面中具有特殊用途,因此有其特定的局限性。它不像 "设置 "窗口那样具有通用性。这也是合乎逻辑的。毕竟,所有专门 "定制 "的东西都会受到某种限制。
不过,动态表格或无限列表可以与动态窗口中的其他元素组组合在一起,它们不需要单独的 "唯一 "空间,尽管我认为这样更方便。如何实现表格与其他组的兼容性?- 这是一个技术问题。
为了实验起见,我将使用您的表格,并尝试将它们插入全屏窗口。当然,我需要修改代码...
结果
(点击图片)
我先不公布代码,因为老实说,一切都很 "原始"。我不得不使用一些技巧和 "拐杖"。但是,正如您所看到的,一切都可以正常工作。
7.还有一件事。您的动态窗口是一个可以展开和最小化的对等窗口。我想要的不是窗口,而是桌面。就像你的构造函数一样。这样它
a) 打开后立即展开,覆盖整个图表
b) 没有页眉和框架(只有任务栏)
c) 不能折叠
d) 可以像普通窗口一样放置元素
也就是说,将 DINAMIC 替换为 FULLSCREEN 或 DESKTOP。您已经有了这样做的基础。