文章 "向指标或者EA中快速添加控制面板" - 页 2 1234 新评论 Andrey Khatimlianskii 2016.03.09 05:19 #11 Maxim Dmitrievsky:我就是这么做的,但没什么效果。面板还是和以前一样是白色的。编译器说 Macro redifinition(宏重定义),即像 overdivided.... 一样。用我的第一个建议,替换原始文件中的颜色,然后重新编译 EA。要记住我是如何在面板中重新定义颜色的,我需要四处查查,但现在没时间。 Andrey Khatimlianskii 2016.03.10 13:21 #12 历史: 关于交易、自动交易系统和测试交易策略的论坛 为什么更新智能交易系统设置时面板会移动? Andrey Khatimlianskii, 2016.03.10 13:17 大概是这样:// BEFORE connecting Dialog.mqh! #include <Controls\Defines.mqh> //--- 忘记旧颜色 #undef CONTROLS_DIALOG_COLOR_BORDER_LIGHT #undef CONTROLS_DIALOG_COLOR_BORDER_DARK #undef CONTROLS_DIALOG_COLOR_BG #undef CONTROLS_DIALOG_COLOR_CAPTION_TEXT #undef CONTROLS_DIALOG_COLOR_CLIENT_BG #undef CONTROLS_DIALOG_COLOR_CLIENT_BORDER //--- 设置新颜色 #define CONTROLS_DIALOG_COLOR_BORDER_LIGHT clrWhite // 对话框边框颜色(外部) #define CONTROLS_DIALOG_COLOR_BORDER_DARK C'0xB6,0xB6,0xB6' // 对话框边框颜色(内部) #define CONTROLS_DIALOG_COLOR_BG clrLightGreen // 对话框背景(标题下方和客户端区域周围) #define CONTROLS_DIALOG_COLOR_CAPTION_TEXT C'0x28,0x29,0x3B' // 对话框标题文字颜色 #define CONTROLS_DIALOG_COLOR_CLIENT_BG clrAliceBlue // 客户区域的背景颜色 #define CONTROLS_DIALOG_COLOR_CLIENT_BORDER C'0xC8,0xC8,0xC8' // 客户区域的颜色 // 现在连接 #include <Controls\Dialog.mqh> Evgeny Potapov 2016.04.04 16:31 #13 您能给我一个简单的例子,说明应该如何扭曲CWndContainer,以便使用 .Show() 在聊天屏幕上至少显示一些正方形吗?我已经尝试了所有方法,比如像这样,但没有错误,没有图像,也没有 .Show() 工作的迹象#include <Controls\WndContainer.mqh> class MyWndContainer : public CWndContainer { public: MyWndContainer(string name); }; //+------------------------------------------------------------------+ //| 构造函数| //+------------------------------------------------------------------+ MyWndContainer::MyWndContainer(string name) { m_chart_id = ChartID(); m_subwin = 0; m_name = name; m_id = 0; m_align_top = 5; m_align_right = 5; m_align_left = 5; m_align_bottom = 5; m_mouse_x = 100; m_mouse_y = 100; m_align_flags = ALIGN_CENTER; m_prop_flags = PROGRAM_EXPERT; m_mouse_flags = MOUSE_EMPTY; } Vladimir Karputov 2016.04.04 16:39 #14 Evgeny Potapov:您能给我一个简单的例子,说明如何使用 .Show() 扭曲 CWndContainer,使其至少在聊天屏幕上显示一些正方形吗?我已经尝试了所有方法,比如像这样,但没有错误,没有图像,也没有 .Show() 工作的迹象。 为什么要使用 CWndContainer?最终会得到什么结果? Evgeny Potapov 2016.04.04 16:43 #15 我不明白这里的逻辑://+------------------------------------------------------------------+ //| 使控件组可见 //+------------------------------------------------------------------+ bool CWndContainer::Show(void) { //--- 按组元素循环 int total=m_controls.Total(); for(int i=0;i<total;i++) { CWnd *control=Control(i); //--- 检查指针 if(control==NULL) continue; control.Show(); } //--- 调用父类的方法 return(CWnd::Show()); } 如果我有一个 Button 对象,但它没有 .Show() 方法,怎么办?难道它不能包含在一个容器中吗? Evgeny Potapov 2016.04.04 16:44 #16 Karputov Vladimir: 为什么要使用 CWndContainer?我们最终会得到什么? 一个带有买入和卖出按钮的面板,以及更多有关智能交易系统状态的通知。但它应该可以用鼠标在屏幕上拖动,但按钮却无法拖动。 Vladimir Karputov 2016.04.04 16:49 #17 Evgeny Potapov: 面板上有买入和卖出按钮,还有一些关于智能交易系统状态的通知。但应该用鼠标在屏幕上拖动,但按钮却无法拖动。创建对象(按钮、列表、文本字段等)后,应将该对象添加到面板中(添加方法)。然后,在拖动面板时,所有对象将与面板一起移动。 Evgeny Potapov 2016.04.04 16:51 #18 Karputov Vladimir: 创建对象(按钮、列表、文本字段等)后,应将该对象添加到面板中(添加方法)。然后拖动面板时,所有对象都将随面板一起移动。像这样吗?#include <Controls\Button.mqh> #include <MyControls\MyWndContainer.mqh> CButton *MyButton; CWndContainer *MyContainer; //+------------------------------------------------------------------+ //| 专家初始化函数| //+------------------------------------------------------------------+ int OnInit() { MyButton = new CButton; if(CheckPointer(MyButton) == POINTER_INVALID) return(INIT_FAILED); MyButton.Create(ChartID(),WindowExpertName()+"_button",0,50,100,150,250); MyContainer = new MyWndContainer("MyContainer"); if(CheckPointer(MyContainer) == POINTER_INVALID) return(INIT_FAILED); MyContainer.Add(MyButton); MyContainer.Show(); MyContainer.Enable(); return(INIT_SUCCEEDED); } Evgeny Potapov 2016.04.04 16:53 #19 Karputov Vladimir: 创建对象(按钮、列表、文本字段等)后,应将该对象添加到面板中(添加方法)。然后,在拖动面板时,所有对象都将与面板一起移动。或者这不是 "添加到面板"?所以容器不是面板? Vladimir Karputov 2016.04.04 17:01 #20 Evgeny Potapov:还是说它不是 "添加到面板"?所以容器不是面板?以文章中的PanelDialog2.mqh 文件为例://+------------------------------------------------------------------+ //|PanelDialog2.mqh ///2015年,MetaQuotes软件公司版权所有。 //|http://www.mql5.com || //+------------------------------------------------------------------+ #include <Controls\Dialog.mqh> #include <Controls\CheckGroup.mqh> #include <Controls\Label.mqh> #include <Controls\Edit.mqh> #include <Controls\Button.mqh> //+------------------------------------------------------------------+ //| defines| //+------------------------------------------------------------------+ //-- 缩进和间隙 #define INDENT_LEFT (11) // 从左缩进(考虑到边框宽度) #define INDENT_TOP (11) // 从顶部开始缩进(考虑到边框宽度) #define INDENT_RIGHT (11) // 从右边开始缩进(考虑到边框宽度) #define INDENT_BOTTOM 该文件创建了一个对话面板的元素。面板的标志是CDialog 类。CDialog 类 CDialog 类是对话框组合控件的一个类。说明CDialog 类旨在以可视化方式组合一组功能相关的异构元素。 1234 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我就是这么做的,但没什么效果。面板还是和以前一样是白色的。
编译器说 Macro redifinition(宏重定义),即像 overdivided.... 一样。
用我的第一个建议,替换原始文件中的颜色,然后重新编译 EA。
要记住我是如何在面板中重新定义颜色的,我需要四处查查,但现在没时间。
历史:
关于交易、自动交易系统和测试交易策略的论坛
为什么更新智能交易系统设置时面板会移动?
Andrey Khatimlianskii, 2016.03.10 13:17
大概是这样:
您能给我一个简单的例子,说明应该如何扭曲CWndContainer,以便使用 .Show() 在聊天屏幕上至少显示一些正方形吗?
我已经尝试了所有方法,比如像这样,但没有错误,没有图像,也没有 .Show() 工作的迹象
您能给我一个简单的例子,说明如何使用 .Show() 扭曲 CWndContainer,使其至少在聊天屏幕上显示一些正方形吗?
我已经尝试了所有方法,比如像这样,但没有错误,没有图像,也没有 .Show() 工作的迹象。
我不明白这里的逻辑:
如果我有一个 Button 对象,但它没有 .Show() 方法,怎么办?
难道它不能包含在一个容器中吗?
为什么要使用 CWndContainer?我们最终会得到什么?
面板上有买入和卖出按钮,还有一些关于智能交易系统状态的通知。但应该用鼠标在屏幕上拖动,但按钮却无法拖动。
创建对象(按钮、列表、文本字段等)后,应将该对象添加到面板中(添加方法)。然后拖动面板时,所有对象都将随面板一起移动。
像这样吗?
创建对象(按钮、列表、文本字段等)后,应将该对象添加到面板中(添加方法)。然后,在拖动面板时,所有对象都将与面板一起移动。
或者这不是 "添加到面板"?
所以容器不是面板?
还是说它不是 "添加到面板"?
所以容器不是面板?
以文章中的PanelDialog2.mqh 文件为例:
该文件创建了一个对话面板的元素。面板的标志是CDialog 类。
CDialog 类是对话框组合控件的一个类。
说明
CDialog 类旨在以可视化方式组合一组功能相关的异构元素。