文章 "DoEasy. 控件(第三十一部分):滚动条控件内内容的滚动" - 页 2 1234 新评论 Artyom Trishkin 2023.06.19 12:46 #11 leonerd CArray 中的 Sort() 方法应该在继承类中单独实现,以便对 对象进行排序,不是吗? CArrayObj.Compare()方法内部有一个 Sort()方法: //+------------------------------------------------------------------+ // 搜索排序数组中元素的位置 //+------------------------------------------------------------------+ int CArrayObj::Search(const CObject *element) const { int pos; //--- 检查 if(m_data_total==0 || !CheckPointer(element) || m_sort_mode==-1) return(-1); //--- 搜索 pos=QuickSearch(element); if(m_data[pos].Compare(element,m_sort_mode)==0) return(pos); //--- 未找到 return(-1); } //+------------------------------------------------------------------+ Compare()方法中的Sort()方法,在继承类中需要覆盖该方法。 在 CBar 类(其对象存储在我们要查找的条形列表中)中,Compar() 方法已经被覆盖(在库对象的所有类中也是如此): //+------------------------------------------------------------------+ //| 根据指定属性比较 CBar 对象 //+------------------------------------------------------------------+ int CBar::Compare(const CObject *node,const int mode=0) const { const CBar *bar_compared=node; //--- 比较两个条形的整数属性 if(mode<BAR_PROP_INTEGER_TOTAL) { long value_compared=bar_compared.GetProperty((ENUM_BAR_PROP_INTEGER)mode); long value_current=this.GetProperty((ENUM_BAR_PROP_INTEGER)mode); return(value_current>value_compared ? 1 : value_current<value_compared ? -1 : 0); } //--- 比较两根棒材的实际特性 else if(mode<BAR_PROP_DOUBLE_TOTAL+BAR_PROP_INTEGER_TOTAL) { double value_compared=bar_compared.GetProperty((ENUM_BAR_PROP_DOUBLE)mode); double value_current=this.GetProperty((ENUM_BAR_PROP_DOUBLE)mode); return(value_current>value_compared ? 1 : value_current<value_compared ? -1 : 0); } //--- 比较两个条形的字符串属性 else if(mode<BAR_PROP_DOUBLE_TOTAL+BAR_PROP_INTEGER_TOTAL+BAR_PROP_STRING_TOTAL) { string value_compared=bar_compared.GetProperty((ENUM_BAR_PROP_STRING)mode); string value_current=this.GetProperty((ENUM_BAR_PROP_STRING)mode); return(value_current>value_compared ? 1 : value_current<value_compared ? -1 : 0); } return 0; } //+------------------------------------------------------------------+ 库中的对象搜索结构组织正确。 失败的原因是什么?也许只是因为你没有从头开始学习库? leonerd 2024.06.01 10:58 #12 Artyom Trishkin #: 有什么问题?也许是因为您没有从一开始就使用图书馆? 您好。我不是在抱怨,当然我也没有读过您所有的文章。我怀疑有没有。但是一些简单的东西并不能正常工作,甚至没有说明它们应该如何工作。 这里有标准的图形元素。顺便说一下,许多基本元素(本例中的编辑)甚至都没有示例。 因此,CreateEditField() 无法运行。它在 CreateNewStdGraphObjectAndGetCtrlObj() 方法中崩溃。在这里: CChartObjectsControl *ctrl=this.GetChartObjectCtrlObj(chart_id); if(ctrl==NULL) ::Print(DFUN,CMessage::Text(MSG_GRAPH_ELM_COLLECTION_ERR_FAILED_GET_CTRL_OBJ),(string)chart_id); CChartObjectsControl *CGraphElementsCollection::GetChartObjectCtrlObj(const long chart_id) { //--- 循环查看列表中对象的总数 for(int i=0;i<this.m_list_charts_control.Total();i++) { //--- 获取指向下一个对象的指针 CChartObjectsControl *obj=this.m_list_charts_control.At(i); //--- 如果无法获得指针,则转到下一个指针 if(obj==NULL) continue; //--- 如果对象图表标识符等于搜索到的标识符,则返回指向列表中对象的指针 if(obj.ChartID()==chart_id) return obj; } //--- 未找到对象 - 返回 NULL return NULL; } 嗯,m_list_charts_control 是空的......因此,没有添加任何内容,该方法也没有返回任何内容。 总的来说,错误已经够多了。我感觉没有人会实际使用这个库。如果一个工具只允许填充 IOC 类型,那么它将无法工作。那么,它将无法工作。因为它没有正确定义。我不得不编辑大量的方法....。你只要通过你的交易方法就可以了。此外,初始化中的初始方法纠正了填充,但交易方法并没有接受它。 CTrading::OpenPosition() 方法 this.m_request.type_filling=(type_filling>WRONG_VALUE ? type_filling : trade_obj.GetTypeFilling()); 好了,如果订单中没有明确指定填充类型,我们已经找到了正确的填充类型。 但是,我们将原始变量传递给了下一个方法。这有什么意义?或者我有什么不明白的地方...... res=trade_obj.OpenPosition(type,this.m_request.volume,this.m_request.sl,this.m_request.tp,magic,comment,deviation,type_filling); Artyom Trishkin 2024.06.01 11:05 #13 leonerd #:您好。我不是在抱怨,我当然没有读过你所有的文章。我怀疑你有没有读过。但是,简单的东西都不能用,甚至都没有说明它们应该如何工作。这里有标准的图形元素。顺便说一下,您甚至没有为许多基本元素(这里是编辑)提供示例。因此,CreateEditField() 无法运行。它在 CreateNewStdGraphObjectAndGetCtrlObj() 方法中崩溃。就是这样:嗯,m_list_charts_control 是空的......因此,没有添加任何内容,该方法也没有返回任何内容。总的来说,错误已经够多了。我感觉没有人会实际使用这个库。如果一个工具只允许填充 IOC 类型,那么它将无法工作。那么,它将无法工作。因为它没有正确定义。我不得不编辑大量的方法....。你只需查看你的交易方法。初始化中的初始方法修正了填充,但交易方法却没有修正。CTrading::OpenPosition() 方法好了,我们找到了正确的填充类型,如果订单中没有明确指定的话。但是,我们将原始变量传递给了下一个方法。这有什么意义呢?还是我有什么不明白的地方? 这个讨论与本文有什么关系吗?没有。哪篇文章有问题?让我们在讨论中解决它们。PS 我不记得我为库制作了一个输入域类。CreateEditField() 你是从哪里得到的? leonerd 2024.06.01 11:12 #14 Artyom Trishkin #: 这种讨论与这篇文章有关系吗?没有。 问题是关于哪篇文章的? 让我们在讨论中解决它们。 PS 我不记得我为库制作了一个输入字段类。CreateEditField() 你是从哪里得到的? Engine.mqh 中的 CreateEditField() Artyom Trishkin 2024.06.01 11:18 #15 leonerd #:Engine.mqh 中的 CreateEditField() 我无法用手机查看)。等我看到代码后再回答你。 Artyom Trishkin 2024.06.01 14:28 #16 leonerd #: CreateEditField()不起作用。它在 CreateNewStdGraphObjectAndGetCtrlObj() 方法中崩溃。 你为什么要插手私有方法?只有库工作时才需要它们。 用户需要的是公共方法。最终用户并不需要内部方法的工作。 如果你想了解这一切的工作原理,那么介绍所有这些厨房的文章就是为此目的而写的。你想做什么和怎么做并不是很清楚。你不说,也不举例,只是指着从大量例子中抽出的一行说它不起作用....。 leonerd#: 一般来说,有足够多的接头。我感觉没有人会实际使用这个库。 如果你不看说明,试图自己修改和使用内部方法,那么有足够 bug 的不是作者,而是修改它的人。 是的,这个库还在开发中。 我会看看填充类型,谢谢。 但最好还是在相应文章的讨论中进行讨论--这样您就能一次性看到相关说明,而不是在讨论其他内容时谈论一件事。 leonerd 2024.06.01 14:46 #17 А зачем Вы в приватные методы лезете? Они нужны только для работы библиотеки. 我根本不想进去。如果一切正常,我甚至不会打开它。 Artyom Trishkin 2024.06.01 15:22 #18 leonerd #: 我根本不想进去。如果一切正常,我甚至不会打开它。 什么不正常?代码,拜托。光说不行是没用的。 leonerd 2024.06.01 20:42 #19 Artyom Trishkin #:什么对你不起作用?请提供代码。光说不行是没有用的。 我同意这样做没有效果。这就是为什么我在这条评论https://www.mql5.com/ru/forum/438481/page2#comment_53551638 中提供了尽可能多的细节。 Обсуждение статьи "DoEasy. Элементы управления (Часть 31): Прокрутка содержимого элемента управления "ScrollBar"" 2023.06.19Artyom Trishkinwww.mql5.com Опубликована статья DoEasy. Элементы управления (Часть 31): Прокрутка содержимого элемента управления "ScrollBar" : Автор: Artyom Trishkin... Artyom Trishkin 2024.06.01 22:02 #20 leonerd #: 我在这条评论中提供了最详细的信息。 最详细的代码就是你可以编译、运行、查看不工作的地方并找到和报告原因的代码。 没有测试,文章就无法发表。测试中一切正常。这就是为什么我第三次问你:你在做什么?请提供代码。 1234 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
CArrayObj.Compare()方法内部有一个 Sort()方法:
Compare()方法中的Sort()方法,在继承类中需要覆盖该方法。
在 CBar 类(其对象存储在我们要查找的条形列表中)中,Compar() 方法已经被覆盖(在库对象的所有类中也是如此):
库中的对象搜索结构组织正确。
失败的原因是什么?也许只是因为你没有从头开始学习库?
有什么问题?也许是因为您没有从一开始就使用图书馆?
您好。我不是在抱怨,当然我也没有读过您所有的文章。我怀疑有没有。但是一些简单的东西并不能正常工作,甚至没有说明它们应该如何工作。
这里有标准的图形元素。顺便说一下,许多基本元素(本例中的编辑)甚至都没有示例。
因此,CreateEditField() 无法运行。它在 CreateNewStdGraphObjectAndGetCtrlObj() 方法中崩溃。在这里:
嗯,m_list_charts_control 是空的......因此,没有添加任何内容,该方法也没有返回任何内容。
总的来说,错误已经够多了。我感觉没有人会实际使用这个库。如果一个工具只允许填充 IOC 类型,那么它将无法工作。那么,它将无法工作。因为它没有正确定义。我不得不编辑大量的方法....。你只要通过你的交易方法就可以了。此外,初始化中的初始方法纠正了填充,但交易方法并没有接受它。
CTrading::OpenPosition() 方法
好了,如果订单中没有明确指定填充类型,我们已经找到了正确的填充类型。
但是,我们将原始变量传递给了下一个方法。这有什么意义?或者我有什么不明白的地方......
您好。我不是在抱怨,我当然没有读过你所有的文章。我怀疑你有没有读过。但是,简单的东西都不能用,甚至都没有说明它们应该如何工作。
这里有标准的图形元素。顺便说一下,您甚至没有为许多基本元素(这里是编辑)提供示例。
因此,CreateEditField() 无法运行。它在 CreateNewStdGraphObjectAndGetCtrlObj() 方法中崩溃。就是这样:
嗯,m_list_charts_control 是空的......因此,没有添加任何内容,该方法也没有返回任何内容。
总的来说,错误已经够多了。我感觉没有人会实际使用这个库。如果一个工具只允许填充 IOC 类型,那么它将无法工作。那么,它将无法工作。因为它没有正确定义。我不得不编辑大量的方法....。你只需查看你的交易方法。初始化中的初始方法修正了填充,但交易方法却没有修正。
CTrading::OpenPosition() 方法
好了,我们找到了正确的填充类型,如果订单中没有明确指定的话。
但是,我们将原始变量传递给了下一个方法。这有什么意义呢?还是我有什么不明白的地方?
这种讨论与这篇文章有关系吗?没有。
Engine.mqh 中的 CreateEditField()
Engine.mqh 中的 CreateEditField()
CreateEditField()不起作用。它在 CreateNewStdGraphObjectAndGetCtrlObj() 方法中崩溃。
你为什么要插手私有方法?只有库工作时才需要它们。
用户需要的是公共方法。最终用户并不需要内部方法的工作。
如果你想了解这一切的工作原理,那么介绍所有这些厨房的文章就是为此目的而写的。你想做什么和怎么做并不是很清楚。你不说,也不举例,只是指着从大量例子中抽出的一行说它不起作用....。
一般来说,有足够多的接头。我感觉没有人会实际使用这个库。
如果你不看说明,试图自己修改和使用内部方法,那么有足够 bug 的不是作者,而是修改它的人。
是的,这个库还在开发中。
我会看看填充类型,谢谢。
但最好还是在相应文章的讨论中进行讨论--这样您就能一次性看到相关说明,而不是在讨论其他内容时谈论一件事。
我根本不想进去。如果一切正常,我甚至不会打开它。
什么不正常?代码,拜托。光说不行是没用的。
什么对你不起作用?请提供代码。光说不行是没有用的。
我同意这样做没有效果。这就是为什么我在这条评论https://www.mql5.com/ru/forum/438481/page2#comment_53551638 中提供了尽可能多的细节。
我在这条评论中提供了最详细的信息。
最详细的代码就是你可以编译、运行、查看不工作的地方并找到和报告原因的代码。
没有测试,文章就无法发表。测试中一切正常。这就是为什么我第三次问你:你在做什么?请提供代码。