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

 
MetaQuotes:

Der neue Artikel How to create a graphical panel of any complexity level wurde veröffentlicht:

Autor: Wladimir Karputow

Vielen Dank für die Mitteilung. Ausgezeichnet!

Ich habe nur eine Sache in Ihrem Beispiel vermisst. Sie sollten helfen, wie man Dateninformationen als Text und Zahlen einfügt.

Zum Beispiel:

Stop Loss Wert: 50.50

Take Profit Wert: 250.00

Gleitender Durchschnitt (200): 110.5.


Kennen Sie einen Artikel, der zeigt, wie man so etwas macht?

 
Guilherme Mendonca :

Vielen Dank für die Mitteilung. Ausgezeichnet!

Ich habe nur eine Sache in Ihrem Beispiel vermisst. Sie sollten helfen, wie man Dateninformationen als Text und Zahlen einfügt.

Zum Beispiel:

Stop Loss Wert:50.50

Take Profit Wert: 250.00

Gleitender Durchschnitt (200): 110.5.


Kennen Sie einen Artikel, der zeigt, wie man so etwas macht?

Sehen Sie sich die Standard-Panel-Beispiele im MetaEditor an.

 

Können Sie mir bei dieser Frage helfen?

Ich habe die Panel-Shift-Funktion setShift() zu Ihrer "AppWindowTwoButtonsClass"-Datei hinzugefügt. Wenn wir nun den Diagrammrand nach rechts verschieben und er sich dem Panel nähert, beginnt sich das Panel zusammen mit dem Diagrammrand nach links zu bewegen.

void OnChartEvent(const int id,         // Ereignis-ID 
                  const long& lparam,   // Ereignisparameter vom Typ long
                  const double& dparam, // Ereignisparameter vom Typ Double
                  const string& sparam) // Ereignisparameter vom Typ String
  {
   ExtDialog.ChartEvent(id,lparam,dparam,sparam);
   if(id == CHARTEVENT_CHART_CHANGE) ExtDialog.setShift();
  }

Der Aufruf dieser Funktion ist gelb hervorgehoben.

Die Frage ist: Gibt es eine Möglichkeit, diese Funktion über diesen Pseudocode aufzurufen?

EVENT_MAP_BEGIN(cGPanel)            

EVENT_MAP_END(CAppDialog)

so dass der Aufruf von der Erbenklasse und nicht von der globalen Funktion OnChartEvent() erfolgt.

Ich habe mehrere Definitionen ausprobiert: ON_NO_ID_EVENT(event,handler), ON_OTHER_EVENTS(handler). Aber ich verstehe nicht, wie sie funktionieren.

Ich füge eine Datei mit der zusätzlichen Funktion setShift() bei.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
 
Sehr nützlich, danke für den Beitrag.
Kurze Frage,

Wie kommt es, dass Sie das Folgende verwenden;
//--- Anwendungsdialog erstellen
   if(!AppWindow.Create(0,"AppWindow",0,20,20,360,324))
      return(INIT_FAILED);
//--- Anwendung ausführen
   AppWindow.Run();
//--- erfolgreich
   return(INIT_SUCCEEDED);
  }
Anstatt von;
//--- Anwendungsdialog erstellen
   AppWindow.Create(0,"AppWindow",0,20,20,360,324));
//--- Anwendung ausführen
   AppWindow.Run();
/
  }
die ich in einer mql4-GUI verwendet habe.

Ist dies eine mql5 Notwendigkeit oder hat es andere Vorteile?

Danke
 
emargrie :
Sehr nützlich, danke für den Beitrag.
Kurze Frage,

Wie kommt es, dass Sie das Folgende verwenden;
Anstelle von;
Die ich in einer mql4-GUI verwendet habe.

Ist dies eine mql5-Notwendigkeit oder hat es andere Vorteile?

Danke

Wenn SIE wirklich keinen Unterschied sehen, müssen Sie dringend das alte Terminal wegwerfen. Das alte Terminal wirkt sich negativ auf Sie aus. Leider hat das alte Terminal Sie gelehrt, sehr gefährlichen Code zu schreiben - Sie sind es gewohnt, Code OHNE PRÜFUNGEN zu schreiben, der Fehler zurückgibt.

 
Vladimir Karputov:

Wenn SIE den Unterschied wirklich nicht sehen, müssen Sie das alte Terminal dringend wegwerfen. Das alte Terminal wirkt sich negativ auf Sie aus. Leider hat das alte Terminal Sie gelehrt, sehr gefährlichen Code zu schreiben - Sie sind es gewohnt, Code OHNE PRÜFUNGEN zu schreiben, der Fehler zurückgibt.

Das war keineswegs ein Seitenhieb auf Ihren Beitrag, sondern eher eine Frage, warum das so gemacht wird, damit ich es lerne - meine Programmierkenntnisse sind sehr begrenzt.

 
emargrie :

Das war keineswegs ein Seitenhieb auf Ihren Beitrag, sondern eher eine Frage, warum das so gemacht wird, damit ich es lerne - meine Programmierkenntnisse sind sehr begrenzt.

Ich habe bereits erklärt: Sie können keinen Code schreiben, der nicht auf Fehlerrückgaben prüft.

 
Vladimir Karputov:

Ich habe bereits erklärt: Sie können keinen Code schreiben, der nicht auf Fehlerrückgaben prüft.

Danke
 

Hallo Vladimir

das ist ein gut geschriebener Artikel, gute Arbeit

Grüße Paul

 
Paul Anscombe:

Hallo Wladimir

das ist ein gut geschriebener Artikel, gute Arbeit

Grüße Paul

Danke