用于创建面板和对话的类 - 页 3 1234567 新评论 Anatoli Kazharski 2016.10.28 10:54 #21 Slawa:症状是什么? Dimitri需要在主图表窗口中创建指标的GUI,它 在一个子窗口(indicator_separate_window)中。 Anatoli Kazharski 2016.10.28 11:18 #22 Dmitry Fedoseev: 所以总之,我也有一个小问题。)这种模式,即"指标在子窗口中,其图形用户界面在主图表窗口中",以前没有在我的库中测试过,现在有一个小错误,导致无法通过按关闭按钮来删除指标,而且在子窗口中放置/删除其他指标后,在确定子窗口编号方面也有冲突,这导致在某些情况下事件处理 不正确。 我将完善这种模式的库,但要晚一点,这将在未来的版本中提供。这将需要一些时间,因为我们需要在不同情况下仔细测试一切。作为一个替代方案,我可以根据已经测试过的情况提出以下建议,并能发挥作用。你可以用各种方式将指标栏放在指标子窗口中。有几种模式,你可以最小化面板(1)与指示器子窗口一起,或(2)只有面板而不接触指示器子窗口,如下面的截图所示。子窗口可以是(1)固定高度或(2)自由地手动调整大小。但即使在这种情况下,也有一个限制。图上只能有一个带有图形界面的MQL-应用程序。否则,就会有冲突。//---如果建议的方案是合适的,我将准备模板。如果没有,那么,不幸的是,我无法帮助你。测试用的文件在档案中。 附加的文件: Test.zip 8 kb Dmitry Fedoseev 2016.10.28 11:20 #23 Slawa:没有什么是故障的。症状是什么?我刚刚试过了。首先是子窗口中的指标。然后是图表上的面板。然后在子窗口中有一个类似的面板。我唯一看到的是第一个子窗口中的SimplePanel2。但这并不影响操作。所有的按钮都按得很正确。区别SimplePanel2和SimplePanel的唯一东西是indicator_chart_window属性试着为图形窗口重做SimplePanel,也能正常工作。在子窗口和图表中,当子窗口是一个正常的指标时,两者都能工作。但是,当SimplePanel(在价格图表和子窗口中),然后当我在子窗口中运行一个标准指标时,在价格图表上的面板会出现故障--窗口被最小化,当我试图展开它时,它展开了一会儿,然后又被最小化。在向子窗口添加标准指示器时,我的指示器出现了故障。下面是所含文件的代码。#include <Controls\Dialog.mqh>#include <Controls\Edit.mqh>#include <Controls\ComboBox.mqh>#include <Controls\Label.mqh>#define INDENT 11#define LINE 20class CPanTest:public CAppDialog{ protected: CComboBox m_cmb_main; CEdit m_edit1; void OnMainEvent(){ } void OnControlEvent(){ } public: bool Create(){ if(!CAppDialog::Create(0,"name",0,20,20,200,300)){ return(false); } return(true); } bool OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);}; EVENT_MAP_BEGIN(CPanTest) ON_EVENT(ON_CHANGE,m_cmb_main,OnMainEvent) ON_EVENT(ON_END_EDIT,m_edit1,OnControlEvent) EVENT_MAP_END(CAppDialog)指标。#property version "1.00"#property indicator_chart_window#property indicator_buffers 0#property indicator_plots 0#include <CPanTest.mqh> CPanTest * pan;//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int OnInit(){ pan=new CPanTest(); if(!pan.Create()){ return(INIT_FAILED); } if(!pan.Run()){ return(INIT_FAILED); } return(INIT_SUCCEEDED);}void OnDeinit(const int reason){ pan.Destroy(); delete(pan);} int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]){ return(rates_total);}void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam){ pan.ChartEvent(id,lparam,dparam,sparam);} Classes for creating panels 错误、漏洞、问题 专家顾问 - 杂项问题 Dmitry Fedoseev 2016.10.28 11:30 #24 Anatoli Kazharski:总之,我也有一个小问题。)这种模式,即"指标在子窗口中,其图形用户界面在主图表窗口中",早先在我的库中没有测试过,现在有一个小错误,导致无法通过按关闭按钮来删除指标,而且在子窗口中放置/删除其他指标后,在确定子窗口编号方面也有冲突,这导致某些情况下的事件处理 不正确。 我将完善这种模式的库,但要晚一点,这将在未来的版本中提供。这将需要一些时间,因为我们需要在不同情况下仔细测试一切。作为一个替代方案,我可以根据已经测试过的情况提出以下建议,并能发挥作用。你可以用各种方式将指标栏放在指标子窗口中。有几种模式,你可以最小化面板(1)与指示器子窗口一起,或(2)只有面板而不接触指示器子窗口,如下面的截图所示。子窗口可以是(1)固定高度或(2)自由地手动调整大小。但即使在这种情况下,也有一个限制。图上只能有一个带有图形界面的MQL-应用程序。否则,就会有冲突。//---如果建议的方案是合适的,我将准备模板。如果没有,那么,不幸的是,我无法帮助你。测试用的文件在档案中。 让它在podoc。它应该在子窗口中自由悬挂,独立于子窗口而折叠,并且子窗口可以被缩放。 Anatoli Kazharski 2016.10.28 11:42 #25 Dmitry Fedoseev: 让它在子窗口中。子窗口应该在子窗口中自由悬挂,独立于子窗口折叠,而且子窗口应该是可扩展的。档案里有一个模板文件。如果你有任何问题,我会回答。 附加的文件: Test.zip 4 kb Dmitry Fedoseev 2016.10.28 11:58 #26 Anatoli Kazharski:档案里有一个模板文件。如果你有任何问题,我会回答。有一个混淆的问题。 Anatoli Kazharski 2016.10.28 12:34 #27 Dmitry Fedoseev:有一个混淆的问题。哦,我已经在为下一个版本进行修改了。我会让他们都一样的。) 对上一篇文章中的版本进行了更正。再试一试。 附加的文件: Test.zip 4 kb Dmitry Fedoseev 2016.10.29 09:30 #28 Anatoli Kazharski:哦,我已经在为下一个版本进行修改了。让一切都回到原点。) 对上一篇文章中的版本进行了更正。再试一试。 呃...还有一些...现在有很多关于缺少资源的错误。 Anatoli Kazharski 2016.10.29 09:32 #29 Dmitry Fedoseev: 呃...还有一些...现在有很多关于缺少资源的错误。 图书馆中使用的所有资源都附在该系列的最后一篇文章中。日志信息是什么? Dmitry Fedoseev 2016.10.29 09:34 #30 Anatoli Kazharski: 图书馆中使用的所有资源都附在该系列的最后一篇文章中。 记录本上的信息是什么? 关于缺失资源的信息。 1234567 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
症状是什么?
所以
总之,我也有一个小问题。)这种模式,即"指标在子窗口中,其图形用户界面在主图表窗口中",以前没有在我的库中测试过,现在有一个小错误,导致无法通过按关闭按钮来删除指标,而且在子窗口中放置/删除其他指标后,在确定子窗口编号方面也有冲突,这导致在某些情况下事件处理 不正确。
我将完善这种模式的库,但要晚一点,这将在未来的版本中提供。这将需要一些时间,因为我们需要在不同情况下仔细测试一切。
作为一个替代方案,我可以根据已经测试过的情况提出以下建议,并能发挥作用。你可以用各种方式将指标栏放在指标子窗口中。有几种模式,你可以最小化面板(1)与指示器子窗口一起,或(2)只有面板而不接触指示器子窗口,如下面的截图所示。子窗口可以是(1)固定高度或(2)自由地手动调整大小。但即使在这种情况下,也有一个限制。图上只能有一个带有图形界面的MQL-应用程序。否则,就会有冲突。
//---
如果建议的方案是合适的,我将准备模板。如果没有,那么,不幸的是,我无法帮助你。
测试用的文件在档案中。
没有什么是故障的。症状是什么?
我刚刚试过了。首先是子窗口中的指标。然后是图表上的面板。然后在子窗口中有一个类似的面板。我唯一看到的是第一个子窗口中的SimplePanel2。但这并不影响操作。所有的按钮都按得很正确。
区别SimplePanel2和SimplePanel的唯一东西是indicator_chart_window属性
试着为图形窗口重做SimplePanel,也能正常工作。在子窗口和图表中,当子窗口是一个正常的指标时,两者都能工作。但是,当SimplePanel(在价格图表和子窗口中),然后当我在子窗口中运行一个标准指标时,在价格图表上的面板会出现故障--窗口被最小化,当我试图展开它时,它展开了一会儿,然后又被最小化。
在向子窗口添加标准指示器时,我的指示器出现了故障。下面是所含文件的代码。
#include <Controls\Edit.mqh>
#include <Controls\ComboBox.mqh>
#include <Controls\Label.mqh>
#define INDENT 11
#define LINE 20
class CPanTest:public CAppDialog{
protected:
CComboBox m_cmb_main;
CEdit m_edit1;
void OnMainEvent(){
}
void OnControlEvent(){
}
public:
bool Create(){
if(!CAppDialog::Create(0,"name",0,20,20,200,300)){
return(false);
}
return(true);
}
bool OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
};
EVENT_MAP_BEGIN(CPanTest)
ON_EVENT(ON_CHANGE,m_cmb_main,OnMainEvent)
ON_EVENT(ON_END_EDIT,m_edit1,OnControlEvent)
EVENT_MAP_END(CAppDialog)
指标。
#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots 0
#include <CPanTest.mqh>
CPanTest * pan;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit(){
pan=new CPanTest();
if(!pan.Create()){
return(INIT_FAILED);
}
if(!pan.Run()){
return(INIT_FAILED);
}
return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason){
pan.Destroy();
delete(pan);
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
return(rates_total);
}
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
pan.ChartEvent(id,lparam,dparam,sparam);
}
总之,我也有一个小问题。)这种模式,即"指标在子窗口中,其图形用户界面在主图表窗口中",早先在我的库中没有测试过,现在有一个小错误,导致无法通过按关闭按钮来删除指标,而且在子窗口中放置/删除其他指标后,在确定子窗口编号方面也有冲突,这导致某些情况下的事件处理 不正确。
我将完善这种模式的库,但要晚一点,这将在未来的版本中提供。这将需要一些时间,因为我们需要在不同情况下仔细测试一切。
作为一个替代方案,我可以根据已经测试过的情况提出以下建议,并能发挥作用。你可以用各种方式将指标栏放在指标子窗口中。有几种模式,你可以最小化面板(1)与指示器子窗口一起,或(2)只有面板而不接触指示器子窗口,如下面的截图所示。子窗口可以是(1)固定高度或(2)自由地手动调整大小。但即使在这种情况下,也有一个限制。图上只能有一个带有图形界面的MQL-应用程序。否则,就会有冲突。
//---
如果建议的方案是合适的,我将准备模板。如果没有,那么,不幸的是,我无法帮助你。
测试用的文件在档案中。
让它在子窗口中。子窗口应该在子窗口中自由悬挂,独立于子窗口折叠,而且子窗口应该是可扩展的。
档案里有一个模板文件。如果你有任何问题,我会回答。
档案里有一个模板文件。如果你有任何问题,我会回答。
有一个混淆的问题。
有一个混淆的问题。
哦,我已经在为下一个版本进行修改了。我会让他们都一样的。)
对上一篇文章中的版本进行了更正。再试一试。
哦,我已经在为下一个版本进行修改了。让一切都回到原点。)
对上一篇文章中的版本进行了更正。再试一试。
呃...还有一些...现在有很多关于缺少资源的错误。
图书馆中使用的所有资源都附在该系列的最后一篇文章中。 记录本上的信息是什么?