文章 "图形界面III:简单与多功能按钮组(第二章)"

 

新文章 图形界面III:简单与多功能按钮组(第二章)已发布:

本系列的第一章是关于简单和多功能按钮的,第二篇文章将致力于相互关联的按钮组,这样在应用程序中就可以创建元件,让用户从一个集合(组)中选择一个选项。

使用CRadioButtons类创建RadioButtons.mqh文件,其中必须含有标准的虚方法以及用于保存和取得表单指针的类成员。您可以看到上面其他控件类中的例子。在库中(WndContainer.mqh)包含RadioButtons.mqh文件,

每个单选项将由三个基本对象构成:

  1. 背景;
  2. 图标;
  3. 文字标签。

图 3. 单选按钮的组成部分。

图 3. 单选按钮的组成部分。

作者:Anatoli Kazharski

 
编译 SplitButton.mqh 文件时,出现错误"'return'--无法将常量指针 转换为非常量指针 SplitButton.mqh 90 65"

 
Alexander:
编译 SplitButton.mqh 文件时,出现错误"'return' - 无法从常指针转换为非常指针 SplitButton.mqh 90 65"。

是的,这个错误出现在上次终端更新 之后。游戏 "规则发生了一些变化。只需删除const 指定符即可解决。

转到出现错误的那一行,替换这一行:

CContextMenu     *GetContextMenuPointer(void)        const { return(::GetPointer(m_drop_menu)); }

替换为

CContextMenu     *GetContextMenuPointer(void)              { return(::GetPointer(m_drop_menu)); }

//---

您需要在所有会出现该错误的文件中进行类似的修改。在本系列的下一篇文章中,该错误将得到修正。

感谢您的发布。

 
MetaQuotes Software Corp.:

新文章Graphical Interfaces III: Groups of Simple and Multi-Functional Buttons (Chapter 2) 已出版:

作者:Anatoli KazharskiAnatoli Kazharski

干得好!


但是:当尝试在 MT4 上将面板作为指标使用时(!),每次点击 "图标按钮 "都会两次打印您的
::Print(__FUNCTION__," > id: ",id,"; lparam: ",lparam,"; dparam: ",dparam,"; sparam: ",sparam);

因此,每次点击操作(如递增或其他操作)都要执行两次 :(
有什么办法可以解决吗?

附:奇怪的是,所有操作在 MT5 上都正常。只有 MT4 作为指标使用时才会出现此问题。作为专家程序使用时也正常。

 
marquez:

...



附:奇怪的是,在 MT5 上一切正常。只有 MT4 作为指标使用时才会出现这个问题。而作为专家程序使用时则正常。

谢谢。此错误已在服务台讨论过。第一版资料库发布后将进行更正。将有 25 篇文章。
 

您好、


我做了一个快速、简便的解决方案,效果很好。我的方法是,首先在 OnEvent 中单独检查左按钮是否按下,如果设置为 true,则在辅助语句中写入一个 bool true。然后,用 helper == true 扩展常规的 if 语句,并在 if 中设置重置 helper。效果几乎完美。在某些情况下,没有提到快速点击,但除了有双重结果外,最好还是慢点点击:)

BTW:如果有人能将您当前所有的图书馆更新为英文版就更好了。你们最新的库,如第 05 条等,只有俄文版。

 

你好、



我有一个问题、

如何使图标周围的黑色部分透明?

谢谢

 

你好。

我刚刚下载了文章中的文件3

当我编译它时出现了以下错误

CContextMenu *GetContextMenuPointer(void) const { return(::GetPointer(m_drop_menu));

文件 = splitButton.mqh。

有人知道如何解决这个问题吗?


我正在尝试创建一个简单的按钮

谢谢

 
Kristina Suh 简单的按钮。

谢谢

删除 "const "即可

CContextMenu *GetContextMenuPointer(void) { return(::GetPointer(m_drop_menu))