程序库: 用于创建图形界面的 EasyAndFastGUI 开发库 - 页 22 1...151617181920212223242526272829...45 新评论 Yevgen Drumachyk 2021.02.12 19:33 #211 同事们好! 通过将对象名称替换为"CElementBase::", 我成功地将错误数量从 18 个减少到 6 个。 这 6 个错误减少为 4 种错误,具体如下。请帮助我正确处理它们。 1.如何正确地将 "m_tabs.GetButtonPointer(m_selected_tab). "替换为 "CElementBase::"? //--- 为线条定义颜色 color clr=m_back_color; if(m_tabs.GetButtonPointer(m_selected_tab).IsLocked()) // this one! clr=m_tabs.GetButtonPointer(m_selected_tab).BackColorLocked(); //--- 画一条线 m_canvas.Line(x1,y1,x2,y2,::ColorToARGB(clr,m_alpha)); } 2. 这里--当我用 "CElementBase:: "替换 "el. "时。- 会出现一个新的编译错误 "IsAvailable - access to non-staticmember of function"(IsAvailable - 访问非静态函数成员)--如何正确修复这个错误? for(int e=0; e<elements_total; e++) { //--- 仅检查可用项目 CElement *el=m_wnd[m_active_window_index].m_elements[e]; if(!el.IsVisible() || !el.IsAvailable() || el.IsLocked()) continue; //--- 项目处理程序中的事件处理 el.OnEvent(m_id,m_lparam,m_dparam,m_sparam); } 3. 同一行:当我用 "CElementBase::IsLocked "替换 "el.IsLocked() "时:出现错误 "IsLocked- access to non-static member of function"。 4. 最后--替换 "m_windows[0].IsLocked() "的正确方法是什么? //--- 如果没有创建接口,则退出 if(windows_total<1) return; //--- 如果启用了其中一种模式,则调整锁定窗体所有元素的大小 if(m_windows[0].IsLocked() && (m_windows[0].AutoXResizeMode() || m_windows[0].AutoXResizeMode())) { 如果能使用这个库就好了,但我需要先解决这些问题。 在此先表示感谢! Documentation on MQL5: Language Basics / Object-Oriented Programming / Static Members of a Class www.mql5.com Static Members of a Class - Object-Oriented Programming - Language Basics - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5 Edgar Akhmadeev 2021.02.13 08:36 #212 Yevgen Drumachyk:各位同事,大家好通过将对象名称替换为"CElementBase::", 我能够将 warrnings 的数量从 18 个减少到 6 个。 el.CElementBase::IsLocked() ? Yevgen Drumachyk 2021.02.13 20:45 #213 Edgar Akhmadeev: el.CElementBase::IsLocked() ? Edgar Akhmadeev,非常感谢你,同事! 成功了!)) Yevgen Drumachyk 2021.02.21 09:55 #214 各位同事,你们好! 您能告诉我如何使用该库创建两个窗口吗?我正在编写一个智能交易系统,它由两个窗口组成:1)交易面板;2)观察列表。 第一个窗口是交易面板,创建后运行正常: CWindow m_window; CreateWindow(m_window, "META TOOLS",1,1,175,175,200,false,false,true,true) + 添加按钮: 但在添加 CWindow m_watchlist_window; CreateWindow(m_watchlist_window, "Watch List",150,1,100,100,150,false,false,true,true,false) CreateButton(m_watchlist1_btn, "EURUSD",m_watchlist_window,0,245,25,60,30) 然后 EURUSD 按钮就会出现在空中...也就是说,没有创建另一个单独的窗口...为什么? 该用户界面是在以下上下文中创建的: class CProgram : public CWndCreate 我使用以下命令完成了用户界面的创建 CWndEvents::CompletedGUI() 能否请您告诉我,您是否成功创建了多窗口用户界面? 我指的是两个独立的窗口。也就是说,出现对话窗口(如设置窗口)的变体并不合适。您需要两个窗口都始终可见并可独立点击。为什么要分开?因为第一个窗口 - 交易面板 - 大小是固定的。第二个窗口 - 观察列表 - 窗口大小会随着添加或减少的项目数量而变化。 Libraries: EasyAndFastGUI library for 基于 Merill(梅里尔) 形态的策略构建器 自动选择有 "钱途" 的信号 Yevgen Drumachyk 2021.02.21 10:00 #215 你们好! 您能否使用该库创建一个以上的独立窗口?也就是说,在同一个 EA 中多次调用 WindowCreate() 方法在图表上创建其他窗口? 我可以成功创建 1 个窗口。但当尝试创建第二个窗口时,却没有出现... 有什么原因吗? 或者举个例子,您是如何创建附加窗口(不是对话框)的? 谢谢! Oleksii Chepurnyi 2021.02.21 11:20 #216 Yevgen Drumachyk:请告诉我如何使用该库创建两个窗口? 不能。一切都围绕一个主窗口展开。这也是我开始编写自己的库的原因之一 ) Yevgen Drumachyk 2021.02.21 13:39 #217 Oleksii Chepurnyi:不可能。一切都围绕一个主窗口展开。这也是我开始编写自己的程序库的原因之一 ) 谢谢,Oleksii Chepurnyi!没有这个库我也愿意。它做得非常好。 还有其他版本吗?也许有人绕过了这个问题,成功创建了不止一个窗口? 您可以在库代码中看到,新创建的窗口会被添加到 "通用元素数组 "中。因此,窗口可能不止一个......?请注意库中的这段代码: //+------------------------------------------------------------------+ //| 向界面元素数据库添加窗口指针 //+------------------------------------------------------------------+ void CWndContainer::AddWindow(CWindow &object) { int windows_total=::ArraySize(m_windows); //--- 如果还没有窗口,则将元素计数器重置为零 if(windows_total<1) { m_counter_element_id=0; ::Comment("Loading. Please wait..."); } //--- 添加指向窗口数组的指针 int new_size=windows_total+1; ::ArrayResize(m_wnd,new_size); ::ArrayResize(m_windows,new_size); m_windows[windows_total]=::GetPointer(object); //--- 添加指向通用元素数组的指针 int last_index=ResizeArray(m_wnd[windows_total].m_elements); m_wnd[windows_total].m_elements[last_index]=::GetPointer(object); //--- 向数据库添加窗口按钮指针 AddWindowElements(windows_total,object); //--- 设置 id 并记住最后一个元素的 id m_windows[windows_total].Id(m_counter_element_id); m_windows[windows_total].LastId(m_counter_element_id); //-- 增加元素标识符计数器 m_counter_element_id++; } Sergey Likho 2021.02.21 18:46 #218 要同时启动两个窗口并使其处于活动状态,需要编辑库。这可不是一项简单而繁重的任务。如果您非常需要,请写信给自由职业者 Cid Ougaske 2021.03.26 17:53 #219 有史以来最棒的祝贺你 rafaeldallatorr 2021.04.07 05:19 #220 大家好,请问 CreateSimpleButton 有限制吗?我无法在窗口上放置超过 6 个简单按钮。我使用的是图形界面 x (mql4) 的代码。我遇到了 uninit 原因 8。 我非常感谢 Anatoli Kazharski Best, RDT。 我发现错误出在 metatrader 4 本身,我在同一个图表上多次编译 EA。我注意到,如果我做了更改并关闭图表,然后打开一个新图表并将 EA 放入其中,更改就会正确应用。阿纳托利,非常感谢你出色而完整的工作。最棒的,RDT Anatoli Kazharski 2019.02.17www.mql5.com Perfil do Trader 1...151617181920212223242526272829...45 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
同事们好!
通过将对象名称替换为"CElementBase::", 我成功地将错误数量从 18 个减少到 6 个。
这 6 个错误减少为 4 种错误,具体如下。请帮助我正确处理它们。
1.如何正确地将 "m_tabs.GetButtonPointer(m_selected_tab). "替换为 "CElementBase::"?
2. 这里--当我用 "CElementBase:: "替换 "el. "时。- 会出现一个新的编译错误 "IsAvailable - access to non-staticmember of function"(IsAvailable - 访问非静态函数成员)--如何正确修复这个错误?
3. 同一行:当我用 "CElementBase::IsLocked "替换 "el.IsLocked() "时:出现错误 "IsLocked- access to non-static member of function"。
4. 最后--替换 "m_windows[0].IsLocked() "的正确方法是什么?
如果能使用这个库就好了,但我需要先解决这些问题。
在此先表示感谢!
各位同事,大家好
通过将对象名称替换为"CElementBase::", 我能够将 warrnings 的数量从 18 个减少到 6 个。
el.CElementBase::IsLocked() ?
Edgar Akhmadeev,非常感谢你,同事!
成功了!))
各位同事,你们好!
您能告诉我如何使用该库创建两个窗口吗?我正在编写一个智能交易系统,它由两个窗口组成:1)交易面板;2)观察列表。
第一个窗口是交易面板,创建后运行正常:
CWindow m_window;
CreateWindow(m_window, "META TOOLS",1,1,175,175,200,false,false,true,true) + 添加按钮:
但在添加
CWindow m_watchlist_window;
CreateWindow(m_watchlist_window, "Watch List",150,1,100,100,150,false,false,true,true,false)
CreateButton(m_watchlist1_btn, "EURUSD",m_watchlist_window,0,245,25,60,30)
然后 EURUSD 按钮就会出现在空中...也就是说,没有创建另一个单独的窗口...为什么?
该用户界面是在以下上下文中创建的: class CProgram : public CWndCreate
我使用以下命令完成了用户界面的创建
CWndEvents::CompletedGUI()
能否请您告诉我,您是否成功创建了多窗口用户界面?
我指的是两个独立的窗口。也就是说,出现对话窗口(如设置窗口)的变体并不合适。您需要两个窗口都始终可见并可独立点击。为什么要分开?因为第一个窗口 - 交易面板 - 大小是固定的。第二个窗口 - 观察列表 - 窗口大小会随着添加或减少的项目数量而变化。
你们好!
您能否使用该库创建一个以上的独立窗口?也就是说,在同一个 EA 中多次调用 WindowCreate() 方法在图表上创建其他窗口?
我可以成功创建 1 个窗口。但当尝试创建第二个窗口时,却没有出现...
有什么原因吗?
或者举个例子,您是如何创建附加窗口(不是对话框)的?
谢谢!
请告诉我如何使用该库创建两个窗口?
不能。一切都围绕一个主窗口展开。这也是我开始编写自己的库的原因之一 )
不可能。一切都围绕一个主窗口展开。这也是我开始编写自己的程序库的原因之一 )
谢谢,Oleksii Chepurnyi!没有这个库我也愿意。它做得非常好。
还有其他版本吗?也许有人绕过了这个问题,成功创建了不止一个窗口?
您可以在库代码中看到,新创建的窗口会被添加到 "通用元素数组 "中。因此,窗口可能不止一个......?请注意库中的这段代码:
大家好,请问 CreateSimpleButton 有限制吗?我无法在窗口上放置超过 6 个简单按钮。我使用的是图形界面 x (mql4) 的代码。我遇到了 uninit 原因 8。 我非常感谢 Anatoli Kazharski Best, RDT。
我发现错误出在 metatrader 4 本身,我在同一个图表上多次编译 EA。我注意到,如果我做了更改并关闭图表,然后打开一个新图表并将 EA 放入其中,更改就会正确应用。阿纳托利,非常感谢你出色而完整的工作。最棒的,RDT