文章 "图形界面 X: 在多行文本框中选择文本 (集成构建 13)" - 页 8 12345678910111213141516 新评论 Anatoli Kazharski 2017.04.26 15:00 #71 Konstantin:对了,有个问题: 突出显示的字符串无法在测试器中运行。我还没有在测试器中测试过,因为之前有很多限制。目前暂时如此。您是否已尝试在测试器中测试图形用户界面?结果如何?事件是否有效?是否显示了所有图形对象? Konstantin 2017.04.26 15:16 #72 Anatoli Kazharski:我还没有在测试器中测试过,因为之前有很多限制。所以现在暂时是这样的。您是否已经尝试过在测试器中测试图形用户界面?结果如何?事件是否有效?是否显示了所有图形对象? 是的,所有对象都显示了,但在测试器中,图表上的鼠标事件不起作用,但整个界面是活的,事实上以前也是这样。总的来说,我可能会暂时放弃内置计时器,以免编辑库 )) Konstantin 2017.04.30 09:52 #73 我不知道如何使表单在 X 上以一定大小创建,并与图表的右边界绑定,即当改变 X 上图表的大小时,表单不会改变大小,而是向右/向左移动而不改变其大小。可以选择覆盖CWndEvents 类中 的 ChartEventChartChange 方法,该方法位于私有部分,也许将方法移动到私有部分是有意义的:void ChartEventCustom(void); void ChartEventClick(void); void ChartEventMouseMove(void); void ChartEventObjectClick(void); void ChartEventEndEdit(void); void ChartEventChartChange(void);移动到受保护部分,但同样,私有部分的方法也会在这里使用?总之,如果有人遇到过这样的问题,请提出解决方案 Anatoli Kazharski 2017.04.30 10:31 #74 Konstantin:我不知道如何使表单在 X 上以一定大小创建,并与图表的右边界绑定,即当改变 X 上图表的大小时,表单不会改变大小,而是向右/向左移动而不改变其大小。可以选择覆盖CWndEvents 类中 的 ChartEventChartChange 方法,该方法位于私有部分,也许将方法移动到私有部分是有意义的:移动到受保护部分,但同样,私有部分的方法也会在这里使用?总之,如果有人遇到过这样的问题,请提出解决方案大约是这样的//+------------------------------------------------------------------+ //|| 为控件创建表单 //+------------------------------------------------------------------+ bool CProgram::CreateWindow(const string caption_text) { //--- 将窗口指针添加到窗口数组中 CWndContainer::AddWindow(m_window); //--- 尺寸 int x_size =200; int y_size =200; //--- 坐标 int x =m_chart.WidthInPixels()-(x_size+1); int y =1; //--- 属性 ... //--- 创建表格 if(!m_window.CreateWindow(m_chart_id,m_subwin,caption_text,x,y)) return(false); //--- return(true); }//---在 MQL 应用程序用户类的事件处理程序中,处理CHARTEVENT_CHART_CHANGE 事件时://+------------------------------------------------------------------+ //| 事件处理程序| //+------------------------------------------------------------------+ void CProgram::OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam) { if(id==CHARTEVENT_CHART_CHANGE) { m_window.X(m_chart.WidthInPixels()-(m_window.XSize()+1)); } }//---结果://---还可以添加图表窗口大小(宽度)是否发生变化的检查,因为CHARTEVENT_CHART_CHANGE 事件会在不同情况下生成。例如,滚动图表时。 Konstantin 2017.04.30 13:14 #75 Anatoli Kazharski:它是这样的//---在处理CHARTEVENT_CHART_CHANGE 事件时,在自定义 MQL 应用程序类的事件处理程序中://---结果://---还可以添加图表窗口大小(宽度)是否发生变化的检查,因为CHARTEVENT_CHART_CHANGE 事件会在不同情况下生成。例如,滚动图表时。 哎呀,成功了 )) Konstantin 2017.05.02 04:06 #76 如果创建表格 时设置了SelectableRow(false),如何在表格中获取点击鼠标左键所在行的索引?在OnEvent 中解析sparam 参数看起来并不优雅。当然也可以使用SelectableRow(true),然后使用SelectedItem(),但任务是不选择表中的行。 Anatoli Kazharski 2017.05.02 11:42 #77 Konstantin:如果创建表格时设置了SelectableRow(false),如何在表格中获取点击鼠标左键所在行的索引?在OnEvent 中解析sparam 参数看起来并不优雅。当然,我们可以使用SelectableRow(true),然后使用SelectedItem(),但任务是不选择表中的行。 目前只能这样做,但我会添加这一功能。 Konstantin 2017.05.02 13:36 #78 如何区分在表格中选择一行的事件和在组合框中选择一项的事件? 从代码中可以看出,它们使用相同的ON_CLICK_LIST_ITEM 事件。 Anatoli Kazharski 2017.05.02 13:44 #79 Konstantin: 如何区分在表格中选择一行的事件和在组合框中选择一项的事件? 从代码中可以看出,它们使用相同的ON_CLICK_LIST_ITEM 事件。 为什么会这样?究竟是什么阻碍了您这样做? Konstantin 2017.05.02 14:12 #80 我在表单中显示一个表格,在表格中选择一行,在组合框中选择一个值,表格行中的 数据和组合框中的值应写入一个单独的实体。现在,这些事件没有分隔,因此有必要制作能完成任务的拐杖:也许您能提出其他机制?基本上,表格是一个股票对数组,组合框包含信号类型,单独的实体是信号数组的对象。对象本身并不是一个单独的字段,而是复杂的自定义数据类型,表中的一对代号和一种信号类型被记录在对象中,然后进行另一种处理。 12345678910111213141516 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
对了,有个问题:
突出显示的字符串无法在测试器中运行。我还没有在测试器中测试过,因为之前有很多限制。目前暂时如此。
您是否已尝试在测试器中测试图形用户界面?结果如何?事件是否有效?是否显示了所有图形对象?
我还没有在测试器中测试过,因为之前有很多限制。所以现在暂时是这样的。
您是否已经尝试过在测试器中测试图形用户界面?结果如何?事件是否有效?是否显示了所有图形对象?
是的,所有对象都显示了,但在测试器中,图表上的鼠标事件不起作用,但整个界面是活的,事实上以前也是这样。
总的来说,我可能会暂时放弃内置计时器,以免编辑库 ))
我不知道如何使表单在 X 上以一定大小创建,并与图表的右边界绑定,即当改变 X 上图表的大小时,表单不会改变大小,而是向右/向左移动而不改变其大小。
可以选择覆盖CWndEvents 类中 的 ChartEventChartChange 方法,该方法位于私有部分,也许将方法移动到私有部分是有意义的:
移动到受保护部分,但同样,私有部分的方法也会在这里使用?总之,如果有人遇到过这样的问题,请提出解决方案
我不知道如何使表单在 X 上以一定大小创建,并与图表的右边界绑定,即当改变 X 上图表的大小时,表单不会改变大小,而是向右/向左移动而不改变其大小。
可以选择覆盖CWndEvents 类中 的 ChartEventChartChange 方法,该方法位于私有部分,也许将方法移动到私有部分是有意义的:
移动到受保护部分,但同样,私有部分的方法也会在这里使用?总之,如果有人遇到过这样的问题,请提出解决方案
大约是这样的
//---
在 MQL 应用程序用户类的事件处理程序中,处理CHARTEVENT_CHART_CHANGE 事件时:
//---
结果:
//---
还可以添加图表窗口大小(宽度)是否发生变化的检查,因为CHARTEVENT_CHART_CHANGE 事件会在不同情况下生成。例如,滚动图表时。
它是这样的
//---
在处理CHARTEVENT_CHART_CHANGE 事件时,在自定义 MQL 应用程序类的事件处理程序中:
//---
结果:
//---
还可以添加图表窗口大小(宽度)是否发生变化的检查,因为CHARTEVENT_CHART_CHANGE 事件会在不同情况下生成。例如,滚动图表时。
哎呀,成功了 ))
如果创建表格 时设置了SelectableRow(false),如何在表格中获取点击鼠标左键所在行的索引?在OnEvent 中解析sparam 参数看起来并不优雅。当然也可以使用SelectableRow(true),然后使用SelectedItem(),但任务是不选择表中的行。
如果创建表格时设置了SelectableRow(false),如何在表格中获取点击鼠标左键所在行的索引?在OnEvent 中解析sparam 参数看起来并不优雅。当然,我们可以使用SelectableRow(true),然后使用SelectedItem(),但任务是不选择表中的行。
如何区分在表格中选择一行的事件和在组合框中选择一项的事件? 从代码中可以看出,它们使用相同的ON_CLICK_LIST_ITEM 事件。
我在表单中显示一个表格,在表格中选择一行,在组合框中选择一个值,表格行中的 数据和组合框中的值应写入一个单独的实体。现在,这些事件没有分隔,因此有必要制作能完成任务的拐杖:
也许您能提出其他机制?
基本上,表格是一个股票对数组,组合框包含信号类型,单独的实体是信号数组的对象。对象本身并不是一个单独的字段,而是复杂的自定义数据类型,表中的一对代号和一种信号类型被记录在对象中,然后进行另一种处理。