MQL5中的OOP问题 - 页 15

 
Vasiliy Pushkaryov:

为错误的信息道歉,我之前写的是你不能在子类中调用Create()方法。

现在经过反复检查,可以了。但对私人成员m_button的访问是不可用的。例如,它不可能检查,例如,按钮的状态: 已按下/已释放。

现在有了伊戈尔的暗示,就有可能了。

那里的按钮没有问题,我不记得了,但这个类有准备好的方法(不是字段)--确定状态,如果没有,检查IsActive()或PropFlags()或StateFlags()--肯定有准备好的东西来找出按钮现在的情况。

我将告诉你在MQL中使用图形的第二个黑客--你可以找出按钮的名称(Name()),通过名称找到它,并通过ObjectGetInteger()和其他函数获得状态,但为了避免笨拙地做,在你的类中写出方法,通过ObjectGetInteger()获得属性


像这样;)

PS: 我也在SB中挣扎--我找不到为什么复选框在最小化和最大化面板后会变成选中--就像鼠标在对象上被点击一样......当我意识到我不想重新阅读整个SB时,我创建了我自己的处理程序,在最小化表单后会通过ObjectSetInteger()为复选框设置取消选择的对象属性。

 
Igor Makanu:

巴顿没有问题,我不记得了,但是这个类有准备好的方法(不是字段)--确定状态,如果没有,就检查IsActive()或PropFlags()或StateFlags()--到底是什么准备好了,以找出现在的按钮是什么。

我将告诉你在MQL中使用图形的第二个黑客--你可以找出按钮的名称(Name()),通过名称找到它,并通过ObjectGetInteger()和其他函数获得状态,但为了避免笨拙地做,在你的类中写出方法,通过ObjectGetInteger()获得属性

像这样;)

PS: 我也在SB上挣扎--我找不到为什么复选框在最小化和最大化面板后会变成选中--就像我的鼠标在对象上被点击一样......我决定我不想重新阅读整件事--我建立了自己的处理程序,在最小化表单后,通过ObjectSetInteger()为我的复选框设置取消选择的对象属性。

我也遇到了这个问题。我需要用我自己的颜色来给对话框上色。它们也被证明是藏在私人部分。我设法用一种方法解决了这个问题,该方法利用ObjectGetInteger() 直接绘制面板。而在最小化和展开之后,也是一片混乱。

这就是标题第一次被最小化之前的样子。


而像这样之后。


我也找不到为什么关闭和折叠按钮会返回默认的颜色。

 
Vasiliy Pushkaryov:

我也遇到过这种情况。我需要用自己的颜色给SB的对话框上色。结果他们也被藏在了私人部分。 我设法用一个方法解决了这个问题,该方法使用ObjectGetInteger()直接绘制面板。而在最小化和展开之后,也是一片混乱。

这就是标题第一次被最小化之前的样子。


而这是在之后。


我也找不到为什么关闭和折叠按钮会返回默认的颜色。

我又看了看本地的std,确信了我自己写库的决定)))
 
Vladimir Simakov:
我再一次看了看当地的std,确信了编写我的库的正确决定)))

在这里 写了关于纽扣时刻的文章,摘录于此。

只要你慢慢地按下按钮,大约一秒钟一次,它就能正常工作。开始推得快一点,往往事件就不会被拦截。

你在你的图书馆里注意到这样的问题吗?我想知道是SB实现的问题还是事件处理架构的问题,没有办法绕过它?

 
Vasiliy Pushkaryov:

...我想知道,这是SB的实现,还是事件处理架构的问题,没有办法解决?

你可以在不使用库 的情况下自己创建一个按钮作为图形对象,并将其操作与用库创建的按钮进行比较。

 
Dmitry Fedoseev:

你可以在不使用库的情况下自己创建一个按钮作为图形对象,并将其操作与使用库创建的按钮进行比较。

谢谢你的想法,我会试一试的。
 
Vasiliy Pushkaryov:

在这里 写了有纽扣的那一刻,摘录于此。

你在你的图书馆里注意到这样的问题吗?我想知道是SB的实现还是事件处理架构的问题,你无法绕过它?

如果你是为自己写的(不是在市场上),用C#做带按钮的窗口,用C#从MQL .dll中调用更容易--任何带按钮、图标、复选框等的幻想都可以在C#中实现,只需半个小时--一个小时,但我不得不在谷歌上搜索了一个星期的材料。

你唯一要做的就是看看你在终端目录中的吧,用它来创建你自己的界面--这是我的经验,我已经学会了我需要知道的一切

SZS: 我刚刚想起来,我在代码库里放了一个简单的面板,那里没有按钮,但是有文本标签,代码也尽可能的简单。https://www.mql5.com/ru/code/25897

 
Dmitry Fedoseev:

你可以在不使用库的情况下自己创建一个按钮作为图形对象,并将其性能与用库创建的按钮进行比较。

是的,取自一份旧工作,当我不与SB一起工作时,我做了一种关闭按钮。它的工作速度很快。


事实证明,问题出在SB的实施上。

 
Vasiliy Pushkaryov:

是的,取自我不与SB合作时的一份旧工作,我做了一种关闭按钮。它的工作速度很快。


事实证明,问题出在SB的实施上。

标准库 意味着控件是在表单上创建的。他们根本就不应该工作,就像这样。至少,过去是这样的。

 
Igor Makanu:

如果你是为自己写的(不是在市场上),那么用C#做带按钮的盒子,用C#从MQL .dll中调用它们就更容易了--任何带按钮、盒子、复选框等的幻想都可以在一个半小时内用C#实现,但我不得不在谷歌上搜索了一周的材料。

你唯一要做的就是看看你在终端目录中的吧,用它来创建你自己的界面--这是我的经验,我已经学会了我需要知道的一切

ZS:是的,我记得,我在代码库中放了一个简单的面板,那里没有按钮,但有文本标签,代码尽可能简单。https://www.mql5.com/ru/code/25897

不,我不懂C#。

我会看一下小组的情况,谢谢你。