文章 "制作仪表板以显示指标和EA中的数据" - 页 2 1234 新评论 Serge_MS 2024.06.03 12:47 #11 Artyom Trishkin #:你好那么声明了一个指向未来动态创建的类对象的指针变量,并立即以NULL 值初始化。一个类的简单实例声明如下:但在这种情况下,你不能以这种方式声明和创建实例--该类没有不带形式参数的构造函数。因此,在以这种方式声明实例时,必须指定类对象的所有必要参数,这些参数必须传递给类的构造函数:------------------------在使用该类的示例中,首先在指示器中创建一个指向未来对象的空指针,然后在 OnInit() 中创建面板对象,并将指向已创建对象的指针写入指针变量:然后在 OnDeinit() 中通过该指针删除内存中的对象:如果只是通过new 操作符创建一个新对象,而没有将指向所创建对象的指针写入变量,那么以后就无法删除该对象,从而导致内存泄漏。因此,简而言之,在文章的示例中 声明一个指向未来类对象的变量指针,并将其初始化为NULL 值、 创建一个新的类对象,并将其指针写入之前创建的 dashboard 变量中、 访问创建的对象时,我们使用指针变量和一个点(dashboard.AnyMethod() 工作结束后,通过指针删除动态创建的类对象。 如果立即创建了必要的类(CDashboard dashboard)实例,就不需要指向它的指针了--可以使用 "point "操作符以同样的方式访问它。工作完成后也不需要删除它--终端子系统会自行删除。但它将是程序中唯一的类实例。 动态创建可以让您即时创建所需类的新对象,并通过指针来引用它们。这就是例子中使用动态创建类对象的原因。简化,但未涉及某些要点。 感谢您的全面回答!因此,每个对象都有自己的构造函数,在另一种情况下,对象带有类中要求的参数,您可以在任何阶段创建不同的对象!(Nus 变得更清晰了)。 实际上,创建信息面板的兴趣,是 DPI 显示器的结果,在我的例子中是 168。Comment();很小! 我想在考虑到分辨率的情况下创建一个 TerminalInfoInteger(TERMINAL_SCREEN_DPI) ...为了方便起见,我想按颜色组创建。 也许你有这样的解决方案?您的代码很好,可读性强...而我的代码冗长、难以理解,因此我不得不多次重写!谢谢您的支持! Artyom Trishkin 2024.06.03 16:39 #12 Igor Bakhrushen #:谢谢您的全面回答!因此,每个对象都有自己的构造函数,在另一种情况下,一个对象需要类的参数,在任何阶段,您都可以创建不同的对象!(Nous 说得更清楚了)。实际上,创建信息面板的兴趣,是 DPI 显示器的结果,在我的例子中是 168。Comment();非常小!我想在考虑到分辨率的情况下创建一个 TerminalInfoInteger(TERMINAL_SCREEN_DPI) ...为了方便起见,我想按颜色组创建。也许你有这样的解决方案?您的代码很好,可读性强...而我的代码冗长、难以理解,因此我不得不多次重写!谢谢您的支持! 解决方案就在帮助中的示例中: 交易、自动交易系统和交易策略测试论坛。 用 MQL 编写的用户界面图库 Artyom Trishkin, 2024.05.31 10:33 AM 这里(TERMINAL_SCREEN_DPI): 缩放因子计算示例 : //--- создаём кнопку шириной 1.5 дюйма на экране int screen_dpi = TerminalInfoInteger(TERMINAL_SCREEN_DPI); // получим DPI монитора пользователя int base_width = 144; // базовая ширина в экранных точках для стандартных мониторов c DPI=96 int width = (button_width * screen_dpi) / 96; // вычислим ширину кнопки для монитора пользователя (с учётом его DPI) ... //--- вычисление коэффициента масштабирования в процентах int scale_factor=(TerminalInfoInteger(TERMINAL_SCREEN_DPI) * 100) / 96; //--- использование коэффициента масштабирования width=(base_width * scale_factor) / 100; 以这种方式使用时,图形资源 在不同分辨率的显示器上将具有相同的尺寸。同时,控制元素(按钮、对话窗口等)的大小将与个性化设置一致。 Artyom Trishkin 2024.06.03 16:40 #13 不幸的是,我没有 4K 显示器,所以无法检查,出于同样的原因,我还没有将这样的重新计算输入到程序库中--未经检查,随意这样做并不严肃。 Serge_MS 2024.06.03 17:10 #14 Artyom Trishkin #: 不幸的是,我没有 4K 显示器,所以无法检查,出于同样的原因,我还没有将这种重新计算输入库中--在没有检查的情况下随意这样做并不严肃。 我明白了...谢谢!我们会慢慢解决的! Serge_MS 2024.06.09 17:42 #15 Artyom Trishkin #: 不幸的是,我没有 4K 显示器,所以无法检查,出于同样的原因,我还没有将这种重新计算输入到库中--未经检查就随意进行重新计算是不严肃的。 Artem 你好!以下是考虑到 dpi.... 的构造但事实上,您可以采用另一种方法。比方说,您设定了页眉的大小,然后根据页眉的大小计算面板大小、行高和文本高度。您可以指定两个参数...以及 dpi 是多少。还是有什么问题?我不太确定,您对这个解决方案有什么看法? 附加的文件: terminal64_tzsSKQhaoN.png 50 kb Serge_MS 2024.06.09 17:48 #16 Artyom Trishkin #: 不幸的是,我没有 4K 显示器,所以无法检查,出于同样的原因,我还没有将这种重新计算输入到库中--未经检查就随意进行重新计算是不严肃的。 Artem 你好!以下是考虑到 dpi.... 的构造但事实上,您可以采用另一种方法。比方说,您设定了页眉的大小,然后根据页眉的大小计算面板大小、行高和文本高度。您可以指定两个参数...以及 dpi 是多少。还是有什么问题?我不太确定,您对这个解决方案有什么看法? Artyom Trishkin 2024.06.09 17:58 #17 Igor Bakhrushen #:Artem 你好!这里有一个基于 dpi 的构建.....。但基本上您可以采用另一种方法。比如说,你设置了页眉的大小,然后根据页眉的大小计算面板的行高和文本高度。您可以指定两个参数...以及 dpi 是多少。还是有什么问题?我不太确定,你对这个解决方案有什么看法? 一切都要经过测试没有显示器我做不了。所以很遗憾,我无话可说。 Lukka Mayer 2024.07.28 01:30 #18 很好,谢谢你的代码。) Denis Kirichenko 2024.09.23 19:59 #19 关于面板的想法不错。但我注意到,当从另一个图表切换到面板时,面板会自动降到图表底部。例如 Artyom Trishkin 2024.09.23 20:20 #20 Denis Kirichenko #:关于面板的想法不错。但我注意到,当从另一个图表切换到面板时,面板会自动降到图表底部。例如 嗯,有趣的现象。我得在空闲时研究一下。最有可能的原因是调整了非活动图表的大小。 1234 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你好
那么
声明了一个指向未来动态创建的类对象的指针变量,并立即以NULL 值初始化。
一个类的简单实例声明如下:
但在这种情况下,你不能以这种方式声明和创建实例--该类没有不带形式参数的构造函数。
因此,在以这种方式声明实例时,必须指定类对象的所有必要参数,这些参数必须传递给类的构造函数:
------------------------
在使用该类的示例中,首先在指示器中创建一个指向未来对象的空指针,然后在 OnInit() 中创建面板对象,并将指向已创建对象的指针写入指针变量:
然后在 OnDeinit() 中通过该指针删除内存中的对象:
如果只是通过new 操作符创建一个新对象,而没有将指向所创建对象的指针写入变量,那么以后就无法删除该对象,从而导致内存泄漏。
因此,简而言之,在文章的示例中
如果立即创建了必要的类(CDashboard dashboard)实例,就不需要指向它的指针了--可以使用 "point "操作符以同样的方式访问它。工作完成后也不需要删除它--终端子系统会自行删除。但它将是程序中唯一的类实例。
动态创建可以让您即时创建所需类的新对象,并通过指针来引用它们。这就是例子中使用动态创建类对象的原因。简化,但未涉及某些要点。
感谢您的全面回答!因此,每个对象都有自己的构造函数,在另一种情况下,对象带有类中要求的参数,您可以在任何阶段创建不同的对象!(Nus 变得更清晰了)。
实际上,创建信息面板的兴趣,是 DPI 显示器的结果,在我的例子中是 168。Comment();很小!
我想在考虑到分辨率的情况下创建一个 TerminalInfoInteger(TERMINAL_SCREEN_DPI) ...为了方便起见,我想按颜色组创建。
也许你有这样的解决方案?您的代码很好,可读性强...而我的代码冗长、难以理解,因此我不得不多次重写!谢谢您的支持!
谢谢您的全面回答!因此,每个对象都有自己的构造函数,在另一种情况下,一个对象需要类的参数,在任何阶段,您都可以创建不同的对象!(Nous 说得更清楚了)。
实际上,创建信息面板的兴趣,是 DPI 显示器的结果,在我的例子中是 168。Comment();非常小!
我想在考虑到分辨率的情况下创建一个 TerminalInfoInteger(TERMINAL_SCREEN_DPI) ...为了方便起见,我想按颜色组创建。
也许你有这样的解决方案?您的代码很好,可读性强...而我的代码冗长、难以理解,因此我不得不多次重写!谢谢您的支持!
解决方案就在帮助中的示例中:
交易、自动交易系统和交易策略测试论坛。
用 MQL 编写的用户界面图库
Artyom Trishkin, 2024.05.31 10:33 AM
这里(TERMINAL_SCREEN_DPI):
缩放因子计算示例 :
以这种方式使用时,图形资源 在不同分辨率的显示器上将具有相同的尺寸。同时,控制元素(按钮、对话窗口等)的大小将与个性化设置一致。
不幸的是,我没有 4K 显示器,所以无法检查,出于同样的原因,我还没有将这种重新计算输入库中--在没有检查的情况下随意这样做并不严肃。
不幸的是,我没有 4K 显示器,所以无法检查,出于同样的原因,我还没有将这种重新计算输入到库中--未经检查就随意进行重新计算是不严肃的。
Artem 你好!以下是考虑到 dpi.... 的构造但事实上,您可以采用另一种方法。比方说,您设定了页眉的大小,然后根据页眉的大小计算面板大小、行高和文本高度。您可以指定两个参数...以及 dpi 是多少。还是有什么问题?我不太确定,您对这个解决方案有什么看法?
不幸的是,我没有 4K 显示器,所以无法检查,出于同样的原因,我还没有将这种重新计算输入到库中--未经检查就随意进行重新计算是不严肃的。
Artem 你好!以下是考虑到 dpi.... 的构造但事实上,您可以采用另一种方法。比方说,您设定了页眉的大小,然后根据页眉的大小计算面板大小、行高和文本高度。您可以指定两个参数...以及 dpi 是多少。还是有什么问题?我不太确定,您对这个解决方案有什么看法?
Artem 你好!这里有一个基于 dpi 的构建.....。但基本上您可以采用另一种方法。比如说,你设置了页眉的大小,然后根据页眉的大小计算面板的行高和文本高度。您可以指定两个参数...以及 dpi 是多少。还是有什么问题?我不太确定,你对这个解决方案有什么看法?
关于面板的想法不错。但我注意到,当从另一个图表切换到面板时,面板会自动降到图表底部。例如
关于面板的想法不错。但我注意到,当从另一个图表切换到面板时,面板会自动降到图表底部。例如
嗯,有趣的现象。我得在空闲时研究一下。最有可能的原因是调整了非活动图表的大小。