Im Moment ist die Bibliothek für ein Feld im Diagramm angepasst.
Wenn Sie versuchen, 2 Panels hinzuzufügen, werden die Ereignisse falsch abgefangen - die Elemente haben die gleiche Id, und die übergeordnete Id wird nicht überprüft.
Um das zu testen, habe ich die Demo Controls.mq5 genommen und das Panel dupliziert - alle Ereignisse werden für beide Panels dupliziert, obwohl sie das nicht sollten.
ObjCAppDialog.Create(chart,name,subwin,x1,y1,x2,y2))anstelle von
CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))verwenden?
Im Punkt "Füllen des Anzeigefeldes" kann stattdessen etwas wie ?
Guten Tag, vielleicht können Sie mir sagen, was zu tun ist.
Ihr Beispiel ekspert Steuerelemente.
Beim Wechsel zu einem anderen Zeitraum wird der Experte entladen, versucht, ExtDialog.Destroy(Grund); in OnDeinit() zu entfernen.
Können Sie mir sagen, was ich tun muss, damit das Dialogfenster weiterhin funktioniert, wenn ich zu anderen Zeiträumen wechsle?
- www.mql5.com
Guten Tag, vielleicht können Sie mir sagen, was zu tun ist.
Ihr Beispiel ist ein Expert Advisor Controls.
Beim Wechsel zu einem anderen Zeitraum wird der Expert Advisor entladen, ich habe versucht, ExtDialog.Destroy(reason); in OnDeinit() zu entfernen.
Können Sie mir sagen, was ich tun muss, damit das Dialogfenster beim Wechsel zu anderen Perioden weiterhin funktioniert?
IMHO denke ich, dass es einfacher ist, Bibliotheken von Hand zu erstellen, um zu wissen, wo und wie man sie benutzt oder um sie zu reparieren, wenn etwas falsch ist.
Beispiel für das Schreiben eines Panels ohne Verwendung von Standardklassen: VirtualTradePad PositionsStyle
Man kann sich fragen, warum die Verwendung des MQL5-Assistenten zum Erstellen einer Klasse einen Code erzeugt, der sich nicht kompilieren lässt:

Wie im Artikel erwähnt, müssen Sie diese Codezeile manuell hinzufügen, was für einen Assistenten, der für Nicht-Codierer gedacht ist, ein wenig seltsam ist.
#include <Controls\Dialog.mqh>Außerdem :
This article will demonstrate how easy it is to create your own display panels in a separate chart subwindow using the Standard Library classes.
Ich glaube, das ist ein Scherz, nicht ?
- 2011.01.11
- MetaQuotes Software Corp.
- www.mql5.com
"Das ist ein bisschen seltsam für einen Assistenten, der für Nicht-Coder gedacht ist."
Ich glaube nicht, dass dieser Assistent für Nicht-Programmierer gedacht ist.
Er könnte Ihnen (dem Programmieranfänger) einen Fuß in die notwendigen ersten Schritte bringen, um etwas zu erstellen.
Das MQL5-Framework bietet eine Menge Potenzial, und einiges davon könnte mit dem Assistenten entdeckt werden
aber ich denke, um etwas Komplexeres wie dieses Beispiel zu erstellen, braucht man immer die Grundlagen der Programmierung.
Aber ich stimme zu, dass es notwendig sein sollte, die offensichtlichen Dinge einzubeziehen, wenn man von einer Basisklasse ableitet...
" Das ist ein bisschen seltsam für einen Assistenten, der für Nicht-Coder gedacht ist."
Ich glaube nicht, dass dieser Assistent für Nicht-Programmierer gedacht ist.
Er könnte Ihnen (dem Programmieranfänger) einen Fuß in die notwendigen ersten Schritte bringen, um etwas zu erstellen.
Das MQL5-Framework bietet eine Menge Potenzial, und einiges davon könnte mit dem Assistenten entdeckt werden
aber ich denke, um etwas Komplexeres wie dieses Beispiel zu erstellen, braucht man immer die Grundlagen der Programmierung.
Aber ich stimme zu, dass es notwendig sein sollte, die offensichtlichen Dinge einzubeziehen, wenn man von einer Basisklasse ableitet...
Sie haben wahrscheinlich Recht, aber ich dachte, der MQL5-Assistent wurde in erster Linie für Nicht-Programmierer entwickelt. Wie auch immer, das Problem ist wie ein Fehler hier, da Sie Code manuell hinzufügen müssen, um den von Wizard erstellten Code zu kompilieren.
- 2011.01.11
- MetaQuotes Software Corp.
- www.mql5.com
Mir ist aufgefallen, dass in der Bibliothek der Benutzer-GUIs (Panels) ein meiner Meinung nach nicht ganz gelungenes Ereignismodell kopiert wird:
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { ... }
Erstens haben nicht alle Ereignisse einen Satz von Variablen, die den Typen int, long, double und string entsprechen. Irgendwo mag es mehr Variablen geben, die das Ereignis beschreiben, irgendwo weniger, irgendwo stimmen sie nicht mit den vorgeschlagenen Grundtypen überein. In der Tat gibt es ständige Konvertierungen wie int -> bool, string -> int, double -> int usw. Und wenn man aus der Sicht der prozeduralen Programmierung praktisch nichts tun kann (weil man nicht für jeden hypothetischen Fall 1 000 000 überladene Funktionen erstellen wird), dann kann man im Rahmen der OOP alles viel einfacher und eleganter machen.
Das Hauptproblem von OnEvent ist jedoch, dass dieser Event-Handler dazu gedacht ist, Ereignisse zu behandeln, die vom Chart empfangen werden, während das Ereignis alles Mögliche sein kann, wie das Öffnen einer neuen Position oder das Ändern von Kursen. Im Allgemeinen sieht OnEvent(...) irgendwie nicht wie ein universeller Event-Handler aus, IMHO. Vielleicht haben die Entwickler es irgendwie geschafft, ihre eigenen Ereignisse auf der Basis des bestehenden CWnd zu behandeln, aber für mich ist die Verwendung der Standardbibliothek der Panels immer noch problematisch.
- 2010.11.10
- Samuel
- www.mql5.com
Danke, ich habe es studiert, es ist nützlich! Ein paar Augenblicke: gibt es irgendwelche Pläne, eine Art Konstruktor zu erstellen, so dass Panels im Formular-Konstruktor wie in VS zusammengesetzt werden könnten? weil es nicht ganz bequem ist, alles von Hand zu zählen, vielleicht ist es ein Zeichen von Professionalität, aber es dauert lange)).
mit Makros haben sie es offensichtlich übertrieben...
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Neuer Artikel Erstellen Ihrer eigenen grafischen Panels in MQL5 :
Die Benutzerfreundlichkeit eines MQL5-Programms basiert gleichermaßen auf seinem Funktionsreichtum und einer ausgefeilten grafischen Benutzeroberfläche. Das Äußere ist manchmal wichtiger als ein schneller und stabiler Betrieb. Hier sehen Sie Schritt für Schritt, wie Sie Ihre eigenen Anzeigefelder auf Basis der Klassen aus der Standardbibliothek erstellen können.
Autor: MetaQuotes Software Corp.