这有可能吗? - 页 8

 
Vitaly Muzichenko #:

论坛上某处有一个关于mql4和mql5的完整工作代码

大约一年前写的。

在哪个主题中,或如何搜索?

 
Andrey Sokolov #:

在哪个主题中,或如何搜索

这里有一个大问题,就是原始的网站搜索,否则我自己会发现。

 
可能是这个
 
Vasiliy Pushkaryov #:
我想这就是 了?

谢谢你

 
Andrey Sokolov #:

谢谢你

在这个主题的最后一个帖子中,有一个修订的版本和来源
 
Andrey Sokolov #:

你好,请你告诉我你是怎么做的?

将数组中的数据输出到滚动条客户端区域的Labels中,其偏移量等于该滚动条的偏移量。你可以使用标准库中的CScrollV作为滚动条。数组 - 一个包含所有项目的列表。标签 - 显示列表中项目的区域。有什么好复杂的呢......?如果需要,任何熟悉OOP的程序员都可以做到。

 
Mihail Matkovskij #:

将数组中的数据输出到滚动条客户端区域的Labels中,其偏移量等于该滚动条的偏移量。你可以使用标准库中的CScrollV作为滚动条。数组 - 一个包含所有项目的列表。标签 - 显示列表中项目的区域。那有什么好复杂的呢......?如果需要,任何熟悉OOP的程序员都可以做到。

你是否处理过SB的滚动问题?不知为何,我无法让它在没有客户面板的情况下在图表上单独工作。如果我有问题,我可能会问如何使用它。

关于交易、自动交易系统和策略测试器的论坛

如何创建任何复杂的图形面板以及它是如何工作的"。

Vasiliy Pushkaryov, 2021.12.21 10:12

我试图创建一个垂直滚动条,没有任何与面板的链接,只是在图表上,但它不起作用。

例如,对于复选框,这段代码在鼠标点击时给出反应。该复选框出现后又消失了。

#include <Controls\CheckBox.mqh>
CCheckBox Chbox;
//+------------------------------------------------------------------+
void OnInit()
{
  Chbox.Create(0, "MyCheckBox", 0, 20, 20, 100, 40);
  ChartRedraw();
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam)
{
  Chbox.OnEvent(id, lparam, dparam, sparam);
}
//+------------------------------------------------------------------+


但在垂直滚动 方面--对鼠标点击没有反应。

#include <Controls\Scrolls.mqh>
CScrollV Scroll;

void OnInit()
{
  Scroll.Create(0, "MyScrollV", 0, 20, 20, 40, 200);
  ChartRedraw();
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam)
{
  Scroll.OnEvent(id, lparam, dparam, sparam);
}
//+------------------------------------------------------------------+

请指示,谁知道如何使这种组合元素在图表上发挥作用?


 
Vasiliy Pushkaryov #:

你是否处理过SB的滚动问题?由于某些原因,我无法让它在没有客户面板的情况下在图表上单独工作。也许你能帮忙?


那里有很多细微的差别。这个复选框可以工作(视觉上),因为它是OBJ_BITMAP_LABEL,而且它的状态是由终端改变的。它的点击可以像OnChartEvent中任何Bitmap标签的点击一样被追踪。但标准库有自己的基于自定义事件的事件模型。如果CScrollV组件被添加到CAppDialog 中,它们将通过枚举CArrayObj CWndContainer::m_controls在voidCAppDialog::ChartEvent中生成。在你的案例中,组件没有被添加到CAppDialog中,所以没有事件被生成。如何规避这一机制,在没有CAppDialog的情况下强制生成自定义事件,我还没有想过。我需要更详细地分析一下源代码。

你可以尝试在CWndContainer类的基础上创建一个组件。并向其添加元素。那里没有视觉元素(如CDialog和CAppDialog),但所有正确操作UI元素的必要机制都存在。
 
Mihail Matkovskij #:

那里有很多细微的差别。OnCheckBox勾选工作(视觉上),因为它是OBJ_BITMAP_LABEL,其状态由终端改变。它的点击可以像OnChartEvent中的任何Bitmap标签点击一样被追踪。但标准库有自己的基于自定义事件的事件模型。如果CScrollV组件被添加到CAppDialog 中,它们将通过枚举CArrayObj CWndContainer::m_controls在voidCAppDialog::ChartEvent中生成。在你的案例中,组件没有被添加到CAppDialog中,所以没有事件被生成。如何规避这个机制,在没有CAppDialog的情况下强制生成自定义事件,我还没有想过。我需要更详细地分析一下源代码。

你可以尝试在CWndContainer类的基础上创建一个组件。并向其添加元素。那里没有视觉元素(如CDialog和CAppDialog),但所有正确操作UI元素的必要机制都存在。
谢谢你描述了CAppDialog的机制,并建议把它放在一个容器中。当我有更多时间时,我会尝试进行实验。
原因: