文章 "图形界面 X: 高级列表和表格管理。代码优化 (集成构建 7)" - 页 11 1...456789101112 新评论 Juer 2018.05.18 19:11 #101 我仍然不明白如何更新表.... 表中有动态数据,我们需要用定时器更新它。 我尝试使用 Clear() 方法先清除数据,但弹出了一个错误: invalid pointer access in 'Element.mqh' (106,70) 如何更新?我在文章中没有找到任何示例。在所有文章中,表格都是用静态数据填充的。 Anatoli Kazharski 2018.05.19 09:03 #102 Juer:如何更新我尚未理解的表....表中有动态数据,我们需要用定时器更新它。我尝试使用 Clear() 方法先清除数据,但弹出了一个错误:如何更新?我在文章中没有找到任何示例。在所有文章中,表格都是用静态数据填充的。 关于交易、自动交易系统和测试交易策略的论坛。 讨论文章 "GUI X:排序、表格重建和单元格中的控件(第 11 版)"。 Anatoli Kazharski, 2018.05.19 09:03 AM 看这里:图形界面 X:绘制表格和代码优化更新(构建 10) Juer 2018.05.19 11:08 #103 Anatoli Kazharski: 谢谢。只是它没有考虑排序。 排序时,行可以改变位置.... Anatoli Kazharski 2018.05.19 11:30 #104 Juer:谢谢。只是它没有考虑到分类。排序时,行可以改变位置...您可以自己控制排序。为此有一个公共方法CTable::SortData()。 这里有CTable 类的示例和最新版本:EasyAndFast 库更新 Juer 2018.05.19 13:37 #105 Anatoli Kazharski:您可以自己控制排序。为此,我们提供了一个公共方法CTable::SortData()。这里有CTable 类的示例和最新版本:EasyAndFast 库更新仍然不清楚。没有方法确定表中有多少行是非空的。我正在向表中上传未结订单的信息。订单可以出现或关闭。每次我都必须查看表中的所有值,并通过 ticket.... 进行比较。虽然不方便,但还是可以做到的。 另外,您能否帮助我进行排序。我需要在表格中创建一行类似于 "交易 "选项卡上的一行。这一行汇总未结头寸的利润、佣金等。也就是说,这一行的列将与表格中的列相同,但要有总值。那么,如何才能将这一行放在列表的第一位,从而不对其进行排序呢? Anatoli Kazharski 2018.05.19 13:45 #106 Juer:还是不清楚。没有方法确定表中有多少行是非空行。我正在向表中上传未结订单的信息。订单可以出现,也可以关闭。我必须每次都查看表中的所有值,并通过 ticket.... 进行比较。这并不方便,但可以做到。...自己查看各行是否为空。 带图形用户界面的智能交易系统:功能填充(第二部分)》一文详细介绍了如何实现这一点。 尤尔:...另外,您能告诉我排序的方法吗?我需要在表格中创建一行类似于 "交易 "选项卡上的一行。这一行汇总未结头寸的利润、佣金等。也就是说,这一行的列将与表格中的列相同,但要有总值。那么,如何才能将这一行放在列表的第一位,而不对其进行排序呢? 库中没有这种可能性。作为一种选择,您可以在第一个表格上方创建一个不带标题的第二表格,并在其中输出总值。 Juer 2018.05.19 14:53 #107 Anatoli Kazharski:自己去看看线路是否空闲。带图形用户界面的智能交易系统:功能填充(第二部分)》一文详细介绍了如何实现功能填充。程序库没有这项功能。作为一种选择,您可以在第一张表格的上方创建一个不带标题的第二张表格,并在其中输出总值。在文章中的示例中,行数也是恒定的,但我的行数是动态的。但我意识到必须手动操作。 上面的第二个表格不失为一个好办法,但如何处理改变主表列宽的问题?如何与第二个表同步? 还有一个问题。如果第一列只表示记录的序列号。它不需要排序。有没有办法让某一列不排序? Anatoli Kazharski 2018.05.19 15:13 #108 Juer:在文章中的例子中,行数也是恒定的,但我的是动态的。但我明白,这是手工制作,有什么问题呢?你在哪里看到不变的行数?位置数 和使用的字符数是会变化的,这些变化会反映在表格中。 尤尔上面的第二个表格是个不错的解决方案,但改变主表中列的宽度......怎么办?如何与第二个表格同步?还有一个问题。如果第一列只表示记录的序列号。它不需要排序。有没有办法让某一列不排序? 没有,没有办法。 Juer 2018.05.19 15:50 #109 Anatoli Kazharski:你在哪里看到恒定的行数?位置数 和使用的字符数会发生变化,这些变化会反映在表格中。老实说,我不太明白你是如何更新位置的。我知道要更新字符表,只需删除所有行即可。但我不明白位置表是如何更新的: //+------------------------------------------------------------------+ //| 设置位置表中的值 //+------------------------------------------------------------------+ void CProgram::SetValuesToPositionsTable(string &symbols_name[]) { //--- 检查是否超出范围 uint symbols_total =::ArraySize(symbols_name); uint rows_total =m_table_positions.RowsTotal(); if(symbols_total<rows_total) return; //--- 让我们在表格中获取指标 for(uint r=0; r<rows_total; r++) { int positions_total =PositionsTotal(symbols_name[r]); double pos_volume =PositionsVolumeTotal(symbols_name[r]); double buy_volume =PositionsVolumeTotal(symbols_name[r],POSITION_TYPE_BUY); double sell_volume =PositionsVolumeTotal(symbols_name[r],POSITION_TYPE_SELL); double pos_profit =PositionsFloatingProfitTotal(symbols_name[r]); double buy_profit =PositionsFloatingProfitTotal(symbols_name[r],POSITION_TYPE_BUY); double sell_profit =PositionsFloatingProfitTotal(symbols_name[r],POSITION_TYPE_SELL); double average_price =PositionAveragePrice(symbols_name[r]); string deposit_load =::DoubleToString(DepositLoad(false,average_price,symbols_name[r],pos_volume),2)+"/"+ ::DoubleToString(DepositLoad(true,average_price,symbols_name[r],pos_volume),2)+"%"; //--- 设置值 m_table_positions.SetValue(0,r,symbols_name[r]); m_table_positions.SetValue(1,r,(string)positions_total); m_table_positions.SetValue(2,r,::DoubleToString(pos_volume,2)); m_table_positions.SetValue(3,r,::DoubleToString(buy_volume,2)); m_table_positions.SetValue(4,r,::DoubleToString(sell_volume,2)); m_table_positions.SetValue(5,r,::DoubleToString(pos_profit,2)); m_table_positions.SetValue(6,r,::DoubleToString(buy_profit,2)); m_table_positions.SetValue(7,r,::DoubleToString(sell_profit,2)); m_table_positions.SetValue(8,r,deposit_load); m_table_positions.SetValue(9,r,::DoubleToString(average_price,(int)::SymbolInfoInteger(symbols_name[r],SYMBOL_DIGITS))); //--- 设置颜色 m_table_positions.TextColor(3,r,(buy_volume>0)? clrBlack : clrLightGray); m_table_positions.TextColor(4,r,(sell_volume>0)? clrBlack : clrLightGray); m_table_positions.TextColor(5,r,(pos_profit!=0)? (pos_profit>0)? clrGreen : clrRed : clrLightGray); m_table_positions.TextColor(6,r,(buy_profit!=0)? (buy_profit>0)? clrGreen : clrRed : clrLightGray); m_table_positions.TextColor(7,r,(sell_profit!=0)?(sell_profit>0)? clrGreen : clrRed : clrLightGray); } } 我有一点不明白。如果表中的符号少于行数,就不更新吗? 我需要在每个跳动点更新数值。如果每次都删除所有行并重新填写表格,正确的做法是什么? Anatoli Kazharski 2018.05.19 16:08 #110 Juer:我需要在每次勾选时更新实际值。如果每次都删除所有行并重新填写表格,这样做正确吗? 如果只需更新数值,则无需删除任何内容。 如果需要更改表中的行数,一种方法如图所示。 第二种方法是使用CTable::Rebuilding() 方法。但这样就必须重新设置一些表格属性(标题、列宽等)。 1...456789101112 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我仍然不明白如何更新表....
表中有动态数据,我们需要用定时器更新它。
我尝试使用 Clear() 方法先清除数据,但弹出了一个错误:
如何更新?我在文章中没有找到任何示例。在所有文章中,表格都是用静态数据填充的。
如何更新我尚未理解的表....
表中有动态数据,我们需要用定时器更新它。
我尝试使用 Clear() 方法先清除数据,但弹出了一个错误:
如何更新?我在文章中没有找到任何示例。在所有文章中,表格都是用静态数据填充的。
关于交易、自动交易系统和测试交易策略的论坛。
讨论文章 "GUI X:排序、表格重建和单元格中的控件(第 11 版)"。
Anatoli Kazharski, 2018.05.19 09:03 AM
看这里:图形界面 X:绘制表格和代码优化更新(构建 10)
谢谢。只是它没有考虑排序。
排序时,行可以改变位置....
谢谢。只是它没有考虑到分类。
排序时,行可以改变位置...
您可以自己控制排序。为此有一个公共方法CTable::SortData()。
这里有CTable 类的示例和最新版本:EasyAndFast 库更新
您可以自己控制排序。为此,我们提供了一个公共方法CTable::SortData()。
这里有CTable 类的示例和最新版本:EasyAndFast 库更新
仍然不清楚。没有方法确定表中有多少行是非空的。我正在向表中上传未结订单的信息。订单可以出现或关闭。每次我都必须查看表中的所有值,并通过 ticket.... 进行比较。虽然不方便,但还是可以做到的。
另外,您能否帮助我进行排序。我需要在表格中创建一行类似于 "交易 "选项卡上的一行。这一行汇总未结头寸的利润、佣金等。也就是说,这一行的列将与表格中的列相同,但要有总值。那么,如何才能将这一行放在列表的第一位,从而不对其进行排序呢?
还是不清楚。没有方法确定表中有多少行是非空行。我正在向表中上传未结订单的信息。订单可以出现,也可以关闭。我必须每次都查看表中的所有值,并通过 ticket.... 进行比较。这并不方便,但可以做到。
...
自己查看各行是否为空。
带图形用户界面的智能交易系统:功能填充(第二部分)》一文详细介绍了如何实现这一点。
尤尔:
...
另外,您能告诉我排序的方法吗?我需要在表格中创建一行类似于 "交易 "选项卡上的一行。这一行汇总未结头寸的利润、佣金等。也就是说,这一行的列将与表格中的列相同,但要有总值。那么,如何才能将这一行放在列表的第一位,而不对其进行排序呢?
库中没有这种可能性。作为一种选择,您可以在第一个表格上方创建一个不带标题的第二表格,并在其中输出总值。
自己去看看线路是否空闲。
带图形用户界面的智能交易系统:功能填充(第二部分)》一文详细介绍了如何实现功能填充。
程序库没有这项功能。作为一种选择,您可以在第一张表格的上方创建一个不带标题的第二张表格,并在其中输出总值。
在文章中的示例中,行数也是恒定的,但我的行数是动态的。但我意识到必须手动操作。
上面的第二个表格不失为一个好办法,但如何处理改变主表列宽的问题?如何与第二个表同步?
还有一个问题。如果第一列只表示记录的序列号。它不需要排序。有没有办法让某一列不排序?
在文章中的例子中,行数也是恒定的,但我的是动态的。但我明白,这是手工制作,有什么问题呢?
你在哪里看到不变的行数?位置数 和使用的字符数是会变化的,这些变化会反映在表格中。
尤尔
上面的第二个表格是个不错的解决方案,但改变主表中列的宽度......怎么办?如何与第二个表格同步?
还有一个问题。如果第一列只表示记录的序列号。它不需要排序。有没有办法让某一列不排序?
没有,没有办法。
你在哪里看到恒定的行数?位置数 和使用的字符数会发生变化,这些变化会反映在表格中。
老实说,我不太明白你是如何更新位置的。我知道要更新字符表,只需删除所有行即可。但我不明白位置表是如何更新的:
我有一点不明白。如果表中的符号少于行数,就不更新吗?
我需要在每个跳动点更新数值。如果每次都删除所有行并重新填写表格,正确的做法是什么?
Juer:
我需要在每次勾选时更新实际值。如果每次都删除所有行并重新填写表格,这样做正确吗?
如果只需更新数值,则无需删除任何内容。
如果需要更改表中的行数,一种方法如图所示。
第二种方法是使用CTable::Rebuilding() 方法。但这样就必须重新设置一些表格属性(标题、列宽等)。