文章 "图形界面 VIII: 文件导航器控件 (第三章)" - 页 2 123456 新评论 akskarabey 2016.07.11 08:44 #11 阿纳托利,在我看来,这是我在这里看到的最好的 mql 图形库实施方案。 我现在正在研究如何将它 "嵌入 "到我的 EA 中。除了以下两点,一切都已足够:1)没有在单个单元格内设置控件(复选框、按钮......)的表格。2)我不知道如何制作一个具有动态内容的窗口。对于 1)-th,原则上很明显,你需要创建一个新类作为 CTable 的扩展。但对于第 2) 项,这就是个谜了。假设在 Expert Advisor 工作的不同时刻都会打开一个对话窗口,根据当前条件,对话窗口中的复选框数量会有所不同。如果下一次打开窗口时复选框的数量增加了,那就很清楚是怎么做到的了。但如果复选框数量减少,该如何操作呢?如果我理解正确的话,有必要 "杀死 "一些 "订阅 "到该窗口的控件,但在CWndContainer 中没有销毁项的方法,只有添加项的方法。如果这个版本的库可以做到这一点,您能告诉我怎么做吗? Anatoli Kazharski 2016.07.11 11:39 #12 akskarabey:阿纳托利,在我看来,这是我在这里看到的最好的 mql 图形库实施方案。 我现在正在研究如何将它 "嵌入 "到我的 EA 中。除了以下两点,一切都已足够:1)没有在单个单元格内设置控件(复选框、按钮......)的表格。2)我不知道如何制作一个具有动态内容的窗口。对于 1)-th,原则上很明显,您需要创建一个新类作为 CTable 的扩展。但对于第 2) 项,这就是个谜了。假设在 Expert Advisor 工作的不同时刻,都会打开一个对话窗口,根据当前条件,对话窗口中的复选框数量会有所不同。如果下一次打开窗口时复选框的数量增加了,那就很清楚是怎么做到的了。但如果复选框数量减少,该如何操作呢?如果我理解正确的话,有必要 "杀死 "一些 "订阅 "到该窗口的控件,但在 CWndContainer 中没有销毁项的方法,只有添加项的方法。如果这个版本的库可以做到这一点,您能告诉我怎么做吗?感谢您提出的有趣建议。是的,现在这个版本还没有现成的解决方案。我发现需要这样的功能,所以我把它们添加到了实施计划中。关于第二点。如果您需要复选框的动态列表,那么创建一个类似CCheckboxList 的项目类,并在创建项目后使用添加和删除数组(列表)项目的方法会更容易。顺便说一下,我们还计划将此功能添加到所有类型的列表和表格中。 Andrey Khatimlianskii 2016.07.11 16:46 #13 Anatoli Kazharski:关于第二点。如果您需要复选框的动态列表,更简单的方法是创建另一个CCheckboxList 类型元素的类,并在创建元素后使用添加和删除数组(列表)元素的方法。顺便说一下,我们还计划将此功能添加到所有类型的列表和表格中。 是否可以用不同的复选框集制作多个标签,并显示所需的复选框? Anatoli Kazharski 2016.07.11 16:58 #14 Andrey Khatimlianskii: 我们能否用不同的复选框组制作多个标签,并显示所需的复选框?如果这些复选框组是预定义的,那么这个选项就没问题。 已经可以创建选项卡:图形用户界面七:"选项卡 "元素(第 2 章)>> Andrey Khatimlianskii 2016.07.12 02:26 #15 Anatoli Kazharski:如果从一开始就预定义了集合,则可以使用该选项。 已经可以创建标签:图形用户界面七:标签元素(第 2 章)>>。这是给提问者的提示)还有一个小问题--是否可以通过编程激活标签页。 Anatoli Kazharski 2016.07.12 12:41 #16 Andrey Khatimlianskii:...还有一个小问题--是否可以通过编程激活选项卡。在自定义类中,在创建元素之前创建界面时://+------------------------------------------------------------------+ //| 创建标签区域| //+------------------------------------------------------------------+ bool CProgram::CreateTabs(void) { #define TABS1_TOTAL 4 //--- 传递面板对象 m_tabs.WindowPointer(m_window1); //--- 坐标 int x=m_window1.X()+TABS1_GAP_X; int y=m_window1.Y()+TABS1_GAP_Y; //--- 包含文本和标签宽度的数组 string tabs_text[]={"Tab 1","Tab 2","Tab 3","Tab 4"}; int tabs_width[]={90,90,90,90}; //--- 创建前设置属性 m_tabs.XSize(596); m_tabs.YSize(243); m_tabs.TabYSize(TabsHeight); m_tabs.PositionMode(TabsPosition); m_tabs.SelectedTab((m_tabs.SelectedTab()==WRONG_VALUE) ? 1 : m_tabs.SelectedTab()); //--- 添加具有指定属性的标签页 for(int i=0; i<TABS1_TOTAL; i++) m_tabs.AddTab(tabs_text[i],tabs_width[i]); //--- 创建一个控件 if(!m_tabs.CreateTabs(m_chart_id,m_subwin,x,y)) return(false); //--- 将对象添加到对象组的通用数组中 CWndContainer::AddToElementsArray(0,m_tabs); return(true); }//---这样就可以了吗?或者,在工作过程中创建元素后,是否有必要以编程方式切换选项卡? Ruslan Khasanov 2016.07.12 12:54 #17 最好能增加这样的功能......比如m_tabs.SelectTab(...) Anatoli Kazharski 2016.07.12 13:24 #18 Ruslan Khasanov:Andrey Khatimlianskii:我将在创建标签页后,通过指定其索引来激活它。 的确,在有些情况下这是必要的。我想到了一些可以自动激活标签页的方法。) Artyom Trishkin 2016.07.16 03:38 #19 如何根据显示导航器的窗口大小调整导航器的大小?例如:窗口大小为 450。如何将导航器放入窗口,使其左右各缩进 2 个像素? Anatoli Kazharski 2016.07.16 10:52 #20 Artyom Trishkin:如何根据显示导航器的窗口大小调整导航器的大小?例如:窗口大小为 450。如何将导航器放入窗口,使左右各缩进 2 个像素?您需要使用CFileNavigator::TreeViewAreaWidth() 和CFileNavigator::ContentAreaWidth() 方法,指定树形列表区域和内容区域的宽度。如果不设置内容区域的宽度,导航器的右边缘将自动与窗口的右边缘对齐。 123456 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
阿纳托利,在我看来,这是我在这里看到的最好的 mql 图形库实施方案。
我现在正在研究如何将它 "嵌入 "到我的 EA 中。除了以下两点,一切都已足够:
1)没有在单个单元格内设置控件(复选框、按钮......)的表格。
2)我不知道如何制作一个具有动态内容的窗口。
对于 1)-th,原则上很明显,你需要创建一个新类作为 CTable 的扩展。但对于第 2) 项,这就是个谜了。假设在 Expert Advisor 工作的不同时刻都会打开一个对话窗口,根据当前条件,对话窗口中的复选框数量会有所不同。如果下一次打开窗口时复选框的数量增加了,那就很清楚是怎么做到的了。但如果复选框数量减少,该如何操作呢?如果我理解正确的话,有必要 "杀死 "一些 "订阅 "到该窗口的控件,但在CWndContainer 中没有销毁项的方法,只有添加项的方法。如果这个版本的库可以做到这一点,您能告诉我怎么做吗?
阿纳托利,在我看来,这是我在这里看到的最好的 mql 图形库实施方案。
我现在正在研究如何将它 "嵌入 "到我的 EA 中。除了以下两点,一切都已足够:
1)没有在单个单元格内设置控件(复选框、按钮......)的表格。
2)我不知道如何制作一个具有动态内容的窗口。
对于 1)-th,原则上很明显,您需要创建一个新类作为 CTable 的扩展。但对于第 2) 项,这就是个谜了。假设在 Expert Advisor 工作的不同时刻,都会打开一个对话窗口,根据当前条件,对话窗口中的复选框数量会有所不同。如果下一次打开窗口时复选框的数量增加了,那就很清楚是怎么做到的了。但如果复选框数量减少,该如何操作呢?如果我理解正确的话,有必要 "杀死 "一些 "订阅 "到该窗口的控件,但在 CWndContainer 中没有销毁项的方法,只有添加项的方法。如果这个版本的库可以做到这一点,您能告诉我怎么做吗?
感谢您提出的有趣建议。
是的,现在这个版本还没有现成的解决方案。我发现需要这样的功能,所以我把它们添加到了实施计划中。
关于第二点。如果您需要复选框的动态列表,那么创建一个类似CCheckboxList 的项目类,并在创建项目后使用添加和删除数组(列表)项目的方法会更容易。顺便说一下,我们还计划将此功能添加到所有类型的列表和表格中。
关于第二点。如果您需要复选框的动态列表,更简单的方法是创建另一个CCheckboxList 类型元素的类,并在创建元素后使用添加和删除数组(列表)元素的方法。顺便说一下,我们还计划将此功能添加到所有类型的列表和表格中。
我们能否用不同的复选框组制作多个标签,并显示所需的复选框?
如果这些复选框组是预定义的,那么这个选项就没问题。
已经可以创建选项卡:图形用户界面七:"选项卡 "元素(第 2 章)>>
如果从一开始就预定义了集合,则可以使用该选项。
已经可以创建标签:图形用户界面七:标签元素(第 2 章)>>。
这是给提问者的提示)
还有一个小问题--是否可以通过编程激活标签页。
...
还有一个小问题--是否可以通过编程激活选项卡。
在自定义类中,在创建元素之前创建界面时:
//---
这样就可以了吗?或者,在工作过程中创建元素后,是否有必要以编程方式切换选项卡?
最好能增加这样的功能......
比如
我将在创建标签页后,通过指定其索引来激活它。
的确,在有些情况下这是必要的。我想到了一些可以自动激活标签页的方法。)
如何根据显示导航器的窗口大小调整导航器的大小?
例如:窗口大小为 450。如何将导航器放入窗口,使其左右各缩进 2 个像素?
如何根据显示导航器的窗口大小调整导航器的大小?
例如:窗口大小为 450。如何将导航器放入窗口,使左右各缩进 2 个像素?
您需要使用CFileNavigator::TreeViewAreaWidth() 和CFileNavigator::ContentAreaWidth() 方法,指定树形列表区域和内容区域的宽度。如果不设置内容区域的宽度,导航器的右边缘将自动与窗口的右边缘对齐。