文章 "图形界面 X: 时间控件, 复选框列表控件和表格排序 (集成编译 6)" - 页 3 1234 新评论 Anatoli Kazharski 2016.12.12 20:20 #21 Artyom Trishkin:我指的是网站上的文章--也许旧的那篇文章被添加到了更新中。我从最新更新中提取了文件,从文章底部的网站下载了压缩包。在这里,按照我上面写的进行了更正: 很好。或者你可能有什么东西钉在那里,因为它已经发生了很多次。如果有的话,我会记住的。 Artyom Trishkin 2016.12.12 20:46 #22 Anatoli Kazharski: 哦,很好。否则你可能会有东西钉在那里,这种情况已经发生过很多次了。但我会记住的。你在逼我做傻事。很小,但你能看到。你可以自己装上,然后看看里面--这很容易,尤其是有人告诉过你。 Anatoli Kazharski 2016.12.12 21:00 #23 Artyom Trishkin:你在逼我做傻事它很小,但你能看到。你可以自己下载下来,然后看里面的内容,这很简单,更何况有人告诉过你。我又没问你要证据我只是说我会记住它。但我还没复制呢我会记住的 如果有问题,你的解决方案不一定适用于所有情况。它对你的情况有效,但你需要测试所有模式。如果发现问题,我会自己动手的。真的,不要乱来。) Artyom Trishkin 2016.12.12 21:09 #24 Anatoli Kazharski:我没有要求你提供任何证据。我只是说我会记住它。但我还没复制出来呢我会记住的 如果有问题,你的解决方案不一定对所有情况都有效。它对你的情况有效,但你需要测试所有模式。如果发现问题,我会自己动手的。真的,不要乱来。)好吧,我不会的;)Tol,问题:表格按列排序--一切正常。但是......,如果表格有空行,而且有很多空行,那么排序也包括这些空行。事实证明,假设有一个表格有一千行(1001 - 表头为零)- 根据市场概述中的最大字符数。但目前市场概况中只有 10 个字符。它们都在表格的前十行--从第一行到第十行。其余的行都是空的(表格不是动态的,可以在表格中添加/删除符号)。如果尝试对这样的表格进行排序,排序后的列表会到达表格的最末端--第 990 - 1000 行(零--表头),并且可以看到顶部的空行。这并不好,而且我认为这是一个疏漏。 Anatoli Kazharski 2016.12.12 21:10 #25 Artyom Trishkin:...表格不是动态的,可以在表格中添加/删除字符... 它们很快就会是动态的。我正在努力。 Artyom Trishkin 2016.12.12 21:11 #26 Anatoli Kazharski: 即将充满活力。我现在就在中间。 好极了!排序列表中包含完全空白行的问题是什么?怎么解决? Anatoli Kazharski 2016.12.12 21:14 #27 Artyom Trishkin:...在排序列表中包含完全为空的行有什么问题吗?怎么办? 暂时保持原样。我不会在短期内恢复排序。 Artyom Trishkin 2016.12.12 21:32 #28 Anatoli Kazharski: 暂时就这样吧。我很快就不会再分类了 好吧,我确实有一套分类系统 来满足特定的需求有一天你可以调整一下 Artyom Trishkin 2016.12.14 19:48 #29 Anatoli Kazharski:...ContextMenu.mqh 中上下文菜单 中的分隔线也是如此--菜单项之间的分隔条不在其坐标上。在该方法中://+------------------------------------------------------------------+//| 创建分界线|//+------------------------------------------------------------------+bool CContextMenu::CreateSeparateLine(const int line_number,const int x,const int y) {//--- 保存表单指针 m_sep_line[line_number].WindowPointer(m_wnd);//--- 设置属性 m_sep_line[line_number].TypeSepLine(H_SEP_LINE); m_sep_line[line_number].DarkColor(m_sepline_dark_color); m_sep_line[line_number].LightColor(m_sepline_light_color); m_sep_line[line_number].AnchorRightWindowSide(m_anchor_right_window_side); m_sep_line[line_number].AnchorBottomWindowSide(m_anchor_bottom_window_side);//--- 创建一条分界线 if(!m_sep_line[line_number].CreateSeparateLine(m_chart_id,m_subwin,line_number,x,y,m_x_size-10,2)) return(false);//-- 保存对象指针 CElement::AddToArray(m_sep_line[line_number].Object(0)); return(true); }//+------------------------------------------------------------------+替换为//+------------------------------------------------------------------+//| 创建分界线|//+------------------------------------------------------------------+bool CContextMenu::CreateSeparateLine(const int line_number,const int x,const int y) {//--- 保存表单指针 m_sep_line[line_number].WindowPointer(m_wnd);//--- 设置属性 m_sep_line[line_number].TypeSepLine(H_SEP_LINE); m_sep_line[line_number].DarkColor(m_sepline_dark_color); m_sep_line[line_number].LightColor(m_sepline_light_color); m_sep_line[line_number].AnchorRightWindowSide(m_anchor_right_window_side); m_sep_line[line_number].AnchorBottomWindowSide(m_anchor_bottom_window_side);//--- 创建一条分界线 if(!m_sep_line[line_number].CreateSeparateLine(m_chart_id,m_subwin,line_number,x-m_wnd.X(),y-m_wnd.Y(),m_x_size-10,2)) return(false);//-- 保存对象指针 CElement::AddToArray(m_sep_line[line_number].Object(0)); return(true); }//+------------------------------------------------------------------+分隔线就在其位置上了。 Discussion of article "Graphical 文章 "图形界面 X: 标准图表控件 Discussion of article "Graphical Anatoli Kazharski 2016.12.15 09:26 #30 Artyom Trishkin:ContextMenu.mqh 中上下文菜单的分隔线也是如此,菜单项之间的分隔线不在其坐标上。我已复制了所有此类情况。这适用于所有用作其他项目组件的项目。在创建图形用户界面 时,如果窗体的初始绝对坐标大于 (1,1),就会检测到这种情况。修复方法将在下一个版本中提供。作为临时快速修复方法,(1) 您的示例或 (2) 将窗体的初始坐标设置为 (1,1) 均可奏效。第二种方法更好,因为它可能会加入其他元素定位模式。 1234 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我指的是网站上的文章--也许旧的那篇文章被添加到了更新中。我从最新更新中提取了文件,从文章底部的网站下载了压缩包。
在这里,按照我上面写的进行了更正:
哦,很好。否则你可能会有东西钉在那里,这种情况已经发生过很多次了。但我会记住的。
你在逼我做傻事。
很小,但你能看到。
你可以自己装上,然后看看里面--这很容易,尤其是有人告诉过你。
你在逼我做傻事
它很小,但你能看到。
你可以自己下载下来,然后看里面的内容,这很简单,更何况有人告诉过你。
我又没问你要证据我只是说我会记住它。但我还没复制呢我会记住的
如果有问题,你的解决方案不一定适用于所有情况。它对你的情况有效,但你需要测试所有模式。如果发现问题,我会自己动手的。
真的,不要乱来。)
我没有要求你提供任何证据。我只是说我会记住它。但我还没复制出来呢我会记住的
如果有问题,你的解决方案不一定对所有情况都有效。它对你的情况有效,但你需要测试所有模式。如果发现问题,我会自己动手的。
真的,不要乱来。)
好吧,我不会的;)
Tol,问题:表格按列排序--一切正常。但是......,如果表格有空行,而且有很多空行,那么排序也包括这些空行。事实证明,假设有一个表格有一千行(1001 - 表头为零)- 根据市场概述中的最大字符数。但目前市场概况中只有 10 个字符。它们都在表格的前十行--从第一行到第十行。其余的行都是空的(表格不是动态的,可以在表格中添加/删除符号)。如果尝试对这样的表格进行排序,排序后的列表会到达表格的最末端--第 990 - 1000 行(零--表头),并且可以看到顶部的空行。这并不好,而且我认为这是一个疏漏。
...表格不是动态的,可以在表格中添加/删除字符...
即将充满活力。我现在就在中间。
...在排序列表中包含完全为空的行有什么问题吗?怎么办?
暂时就这样吧。我很快就不会再分类了
...
ContextMenu.mqh 中上下文菜单 中的分隔线也是如此--菜单项之间的分隔条不在其坐标上。
在该方法中:
//| 创建分界线|
//+------------------------------------------------------------------+
bool CContextMenu::CreateSeparateLine(const int line_number,const int x,const int y)
{
//--- 保存表单指针
m_sep_line[line_number].WindowPointer(m_wnd);
//--- 设置属性
m_sep_line[line_number].TypeSepLine(H_SEP_LINE);
m_sep_line[line_number].DarkColor(m_sepline_dark_color);
m_sep_line[line_number].LightColor(m_sepline_light_color);
m_sep_line[line_number].AnchorRightWindowSide(m_anchor_right_window_side);
m_sep_line[line_number].AnchorBottomWindowSide(m_anchor_bottom_window_side);
//--- 创建一条分界线
if(!m_sep_line[line_number].CreateSeparateLine(m_chart_id,m_subwin,line_number,x,y,m_x_size-10,2))
return(false);
//-- 保存对象指针
CElement::AddToArray(m_sep_line[line_number].Object(0));
return(true);
}
//+------------------------------------------------------------------+
替换为
//| 创建分界线|
//+------------------------------------------------------------------+
bool CContextMenu::CreateSeparateLine(const int line_number,const int x,const int y)
{
//--- 保存表单指针
m_sep_line[line_number].WindowPointer(m_wnd);
//--- 设置属性
m_sep_line[line_number].TypeSepLine(H_SEP_LINE);
m_sep_line[line_number].DarkColor(m_sepline_dark_color);
m_sep_line[line_number].LightColor(m_sepline_light_color);
m_sep_line[line_number].AnchorRightWindowSide(m_anchor_right_window_side);
m_sep_line[line_number].AnchorBottomWindowSide(m_anchor_bottom_window_side);
//--- 创建一条分界线
if(!m_sep_line[line_number].CreateSeparateLine(m_chart_id,m_subwin,line_number,x-m_wnd.X(),y-m_wnd.Y(),m_x_size-10,2))
return(false);
//-- 保存对象指针
CElement::AddToArray(m_sep_line[line_number].Object(0));
return(true);
}
//+------------------------------------------------------------------+
分隔线就在其位置上了。
ContextMenu.mqh 中上下文菜单的分隔线也是如此,菜单项之间的分隔线不在其坐标上。
我已复制了所有此类情况。这适用于所有用作其他项目组件的项目。在创建图形用户界面 时,如果窗体的初始绝对坐标大于 (1,1),就会检测到这种情况。
修复方法将在下一个版本中提供。作为临时快速修复方法,(1) 您的示例或 (2) 将窗体的初始坐标设置为 (1,1) 均可奏效。第二种方法更好,因为它可能会加入其他元素定位模式。