文章 "如何创建任意复杂度的图形面板" - 页 9

 
Vasiliy Pushkaryov:
我还没遇到过。我也不知道。Stanislav 在本主题的第 27 个帖子中回答了其中一个问题。

应用 Visible() 方法

按我的需要呼吸

当然,还要感谢 MQ 的 MQL。

嗯,一切都可以实现,任何幻想都可以;)
 

你们好

我对你们俩真是感激不尽。我经常在这里偶然发现一些绝对垃圾的程序代码,多亏了你们的批评,我才省去了很多时间去寻找这类程序的含义。
是否有翻译成德语的完整 MQL 语法的合理说明?

Die Ersetzung des CWndContainer
Die Ersetzung des CWndContainer
  • www.mql5.com
Diese Datei ersetzt die originale Datei WndContainer.mqh. Er verhindert die Veränderung des Charts beim Druck und bei der Haltung der Maus-Taste innerhalb im Bereichs des Containers.
 
Joosy:

你们好

我对你们俩真是感激不尽。我经常在这里偶然发现一些绝对垃圾的程序代码,多亏了你们的批评,我才省去了很多时间去寻找这类程序的含义。
是否有翻译成德语的完整 MQL 语法的合理说明?

  1. https://www.mql5.com/files/pdf/mql5_german.pdf
  2. https://www.mql5.com/zh/docs/function_indices
    这是一个列表,您可以根据座右铭 "名字是什么来着...... "使用 Ctrl+F 搜索其中的关键词。
  3. 在编辑器中,您可以将鼠标放在一个 MQL5 函数上,然后按 F1 键直接进入该函数的文档,其中一些还附有示例...
 
Carl Schreiber:
  1. https://www.mql5.com/files/pdf/mql5_german.pdf
  2. https://www.mql5.com/zh/docs/function_indices
    这是一个列表,您可以根据座右铭使用 Ctrl+F 搜索关键字,名称是什么来着...
  3. 在编辑器中,您可以将鼠标放在一个 MQL5 函数上,然后按 F1 键直接进入该函数的文档,其中一些还附有示例...
基本上,我知道这些文档。不过,您提供的概览显示链接再次启发了我。从这个角度来看,这是一种不同的方法。
谢谢!
 
Joosy:
基本上,我知道文档。不过,您提供的概览显示链接再次启发了我。从这个角度来看,这是一种不同的方法。谢谢!

我也试过面板,但对我来说并不适用,因为它总是在图表窗口中。

现在,我把整个面板都放在了指标窗口 中,而指标窗口 始终位于图表的底部。

 

是的,要创建一个面板,您需要了解几十行代码,然后再制作几十行甚至更多....。本来以为功能已经实现,可以选择或启用(Enable),但是--没有!!!!

恕我直言,我没有看到从简单到复杂的过程。 我要画出正方形,并将它们包裹在我的包装器中。

PS:文章文件最好单独发布 - 可在浏览器中查看。

[删除]  

你好,弗拉基米尔、


非常感谢你的文章,它对我很有帮助。 我只是想知道关于更改 m_client_aream_background 对象颜色的 某些部分:

   int total=AppWindow.ControlsTotal();
   CWndClient*myclient;
   for(int i=0;i<total;i++)
     {
      CWnd*obj=AppWindow.Control(i);
      string name=obj.Name();
      PrintFormat("%d is %s",i,name);
      //--- 颜色 
      if(StringFind(name,"Client")>0)
        {
         CWndClient *client=(CWndClient*)obj;
         client.ColorBackground(clrRed);
         myclient=client;
         Print("client.ColorBackground(clrRed);");
         ChartRedraw();
        }
      //---
      if(StringFind(name,"Back")>0)
        {
         CPanel *panel=(CPanel*) obj;
         panel.ColorBackground(clrGreen);
         Print("panel.ColorBackground(clrGreen);");
         ChartRedraw();
        }
     }

突出显示的部分就是我不确定的地方。我不确定下面的两段代码:


1.Is it accessing aControl file like WndClient.mqh and what is the * for.

CWndClient *client=(CWndClient*)obj;

2.我的另一个问题是,如下所示,obj 和 Name(); 分别是什么。 我知道 obj 可能是一个对象,name 部分是对象的名称。 但是,如果我将 obj.Name(); 放到其他代码中,它就无法理解,所以我知道它与上面的代码是唯一的。 我只是不确定它是如何匹配的。

obj.Name();


如果您有时间回答我的问题,我将不胜感激,并提前向您表示感谢。

 
ctrading :

***

2.我的另一个问题是什么是 obj 和 Name();,如下图所示。 我知道 obj 可能是一个对象,name 部分是对象的名称。 但是,如果我把 obj.Name(); 放到任何其他代码中,它都无法理解,所以我知道它与上面的东西是唯一的。 我只是不确定它是如何匹配的。

obj.Name();

***

obj 变量只存在于for 循环的一次迭代中

 

非常感谢你的文章!

我是一名初学者,正在尝试创建一个更复杂的面板。

在类头创建 CLabel 和 CButton 时,我遇到了一些困难。

因为我会用到很多具有相同文本的标签,例如 "破折号"。

我想找到某种循环或数组来在类头(私有)中创建大量标签:

class CTradePanel : public CAppDialog
  {
private:
   
   CLabel            dashs[100];   //在面板上创建大量的仪表盘
  }


我怎样才能在数组中填入 "标签"?

我的想法是,然后调用下面的某个函数:

for(int i=0 ; i<100 ; i++)
      {
       string dash_name = "dash_"+IntegerToString(i);
       if(!CreateLabel(chart,subwin,dash_name,"-",5*i,5*i))
         {
          return false;
         }
      }

但是,它会返回错误:"'dash_name'--不允许参数转换"。

那么,我怎样才能用 "CLabel "填充数组,然后在for 循环函数中使用这些 "labels "呢?

有人能帮我吗?

 
Guilherme Mendonca :

非常感谢你的文章!

我是一名初学编程者,正在尝试创建一个更复杂的面板。

在类头创建 CLabel 和 CButton 时,我遇到了一些困难。

因为我会用到很多具有相同文本的标签,例如 "破折号"。

我想找到某种循环或数组来在类头(私有)中创建大量标签:


如何在数组中填入 "标签"?

我的想法是,然后调用下面的函数:

但是,它会返回错误:"'dash_name'--参数转换不允许"

那么,我怎样才能"CLabel "填充数组,然后在循环函数中使用这些 "标签 "呢?

有没有人可以帮我?

您需要连接CArrayObj 类。并按照帮助中的示例进行操作。

Documentation on MQL5: Standard Library / Data Collections / CArrayObj
Documentation on MQL5: Standard Library / Data Collections / CArrayObj
  • www.mql5.com
CArrayObj - Data Collections - Standard Library - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5