Diskussion zum Artikel "Wie erstellt man ein grafisches Panel beliebiger Komplexität?" - Seite 9

 
Vasiliy Pushkaryov:
Ich bin noch nicht darauf gestoßen. Ich weiß es nicht. Stanislav beantwortet eine der Fragen in Beitrag 27 dieses Threads. Die Deaktivierung der Standardbibliothek wird dort ebenfalls angesprochen, schauen Sie sich das an.

Anwendung der Methode Visible()

atmet, wie ich es brauche

und ein weiterer Dank an MQ für MQL, natürlich.

gut, alles kann realisiert werden, jede Phantasie ;)
 

Hallo Ihr beiden,

ich kann mich nicht oft genug bei euch beiden bedanken. Ich bin hier schon oft über den einen und anderen absoluten Schwachsinns-Programmcode gestolpert und dank eurer Kritik spare ich mir viel Zeit nach dem Sinn dieser Art von Programmierung zu suchen.
Gibt es denn irgendwo eine vernünftige und ins Deutsche übersetzte Beschreibung der kompletten MQL-Syntax?

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:

Hallo Ihr beiden,

ich kann mich nicht oft genug bei euch beiden bedanken. Ich bin hier schon oft über den einen und anderen absoluten Schwachsinns-Programmcode gestolpert und dank eurer Kritik spare ich mir viel Zeit nach dem Sinn dieser Art von Programmierung zu suchen.
Gibt es denn irgendwo eine vernünftige und ins Deutsche übersetzte Beschreibung der kompletten MQL-Syntax?

  1. https://www.mql5.com/files/pdf/mql5_german.pdf
  2. https://www.mql5.com/de/docs/function_indices
    Dies ist eine Liste in der man durchaus mit Ctrl+F nach Stichwörtern suchen kann nach dem Motto, wie hieß noch mal...
  3. Im Editor kann man auf eine MQL5-Funktion die Maus stellen und F1 drücken, um so direkt zur Dokumentation dieser Funktion zu kommen, manche mit Beispiel..
 
Carl Schreiber:
  1. https://www.mql5.com/files/pdf/mql5_german.pdf
  2. https://www.mql5.com/de/docs/function_indices
    Dies ist eine Liste in der man durchaus mit Ctrl+F nach Stichwörtern suchen kann nach dem Motto, wie hieß noch mal...
  3. Im Editor kann man auf eine MQL5-Funktion die Maus stellen und F1 drücken, um so direkt zur Dokumentation dieser Funktion zu kommen, manche mit Beispiel..
Grundsätzlich kenne ich die Doku‘s. Jedoch bin ich erneut inspiriert durch die von Dir angegebenen Links zur Übersichtsanzeige. So betrachtet ist es eine andere Herangehensweise.
Danke!
 
Joosy:
Grundsätzlich kenne ich die Doku‘s. Jedoch bin ich erneut inspiriert durch die von Dir angegebenen Links zur Übersichtsanzeige. So betrachtet ist es eine andere Herangehensweise.
Danke!

ich hab das mit den panels auch probiert, das funktioniert für mich nicht wirklich, da es immer im Chart Fenster ist.

Jetzt bin ich übergegangen und hab das ganze in einem Indikatorfenster platziert, das hab ich immer als unterstes im Chart

 

yep, um ein Panel zu erstellen, müssen Sie Dutzende von Zeilen Code zu verstehen und dann machen Dutzende und mehr.... Es wurde erwartet, dass die Funktionalität bereits implementiert ist, die ausgewählt oder aktiviert ist (Enable), aber - nein!!!!

mit allem Respekt, aber ich habe nicht gesehen, von einfach bis komplex. Ich werde Quadrate zu zeichnen und wickeln Sie sie in meine Wrapper.

PS: Dateien zu Artikeln besser separat zu posten - verfügbar, um im Browser anzuzeigen.

[Gelöscht]  

Hallo Vladimir,


Vielen Dank für den Artikel, er ist sehr hilfreich. Ich habe mich nur über einige Teile zum Ändern der Farbe der Objekte m_client_area und m_background gewundert:

   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);
      //--- Farbe 
      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();
        }
     }

Die hervorgehobenen Teile sind die Punkte, bei denen ich mir nicht sicher war. Um es aufzuschlüsseln, ich verstehe, was der ganze Code tut, bin mir nur nicht sicher, wie er es tut. Ich war mir nicht sicher über die beiden Codes unten:


1. greift er auf eine Steuerdatei wie WndClient.mqh zu und wofür ist der *.

CWndClient *client=(CWndClient*)obj;

2. Meine andere Frage war, was sind obj und Name(); wie unten gezeigt. Ich bekomme obj ist wahrscheinlich ein Objekt und der Name Teil ist für den Namen des Objekts. Allerdings, wenn ich obj.Name(); in einem anderen Code es nicht verstehen, so dass ich weiß, seine einzigartige etwas von oben. Ich war nur nicht sicher, wie es passt in.

obj.Name();


Ich weiß es zu schätzen, wenn Sie sich die Zeit nehmen, um zu antworten, und danke Ihnen im Voraus.

 
ctrading :

***

2. Meine andere Frage war, was sind obj und Name(); wie unten gezeigt. Ich bekomme obj ist wahrscheinlich ein Objekt und der Name Teil ist für den Namen des Objekts. Allerdings, wenn ich obj.Name(); in einem anderen Code es nicht verstehen, so dass ich weiß, seine einzigartige etwas von oben. Ich war nur nicht sicher, wie es in passt.

obj.Name();

***

Die Variable obj lebt nur während einer Iteration der for-Schleife .

 

Vielen Dank für Ihren Artikel!

Ich bin ein Anfänger-Programmierer und ich versuche, ein viel komplexeres Panel zu erstellen.

Ich bin einige Tage stecken, um CLabel und CButton in der Klasse Kopfzeile zu erstellen.

Da ich eine Menge von Etiketten mit dem gleichen Text, wie ein "Bindestrich" zum Beispiel verwenden wird

Ich versuche, eine Art von Schleife oder ein Array zu finden, um eine Menge von Labels in der Klasse Kopfzeile (privat) zu erstellen:

class CTradePanel : public CAppDialog
  {
private:
   
   CLabel            dashs[100];   //Erstelle viele Striche auf der Tafel
  }


Wie kann ich ein Array mit "Labels" füllen?

Meine Idee ist, dass ich danach eine Art von Funktion unten aufrufe:

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;
         }
      }

Aber, es gibt den Fehler zurück: "'dash_name' - parameter conversion not allowed"

Wie kann ich also ein Array mit "CLabel" füllen und dann diese "Labels" in einer for-Schleifenfunktion verwenden?

Kann mir jemand helfen?

 
Guilherme Mendonca :

Vielen Dank für Ihren Artikel!

Ich bin ein Anfänger Programmierer und ich versuche, eine viel komplexere Panel zu erstellen.

Ich bin einige Tage stecken, um CLabel und CButton in der Klasse Kopfzeile zu erstellen.

Da ich eine Menge von Etiketten mit dem gleichen Text, wie ein "Bindestrich" zum Beispiel verwenden werden

Ich versuche, eine Art Schleife oder ein Array zu finden, um viele Labels im Klassenkopf zu erstellen (privat):


Wie kann ich ein Array mit "Labels" füllen?

Meine Idee ist, nach, dass ich eine Art von Funktion unten aufrufen wird:

Aber, es gibt den Fehler zurück: "'dash_name' - Parameterumwandlung nicht erlaubt"

Wie kann ich also ein Array mit "CLabel" füllen und dann diese "Labels" in einer for-Schleifenfunktion verwenden?

Kann mir jemand helfen?

Sie müssen die CArrayObj Klasse verbinden. Und handeln Sie nach dem Beispiel in der Hilfe.

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