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

 

Hallo!

Könnten Sie mir bitte sagen, warum Ihr Panel auf einem realen Chart gut funktioniert, aber im Strategietester nicht funktioniert?

Das heißt, Ereignisse von Tastendrücken, zum Beispiel, werden nicht verarbeitet.

Wie kann ich das beheben?

Vielen Dank im Voraus!

 
Das Panel ist besser, von einer anderen Sprache auf mt5 verwenden wird rein auf dem Terminal und demDiagramm abhängen
 
Vitaliy Davydov Strategietester nicht funktioniert?

Das heißt, Ereignisse von Tastendrucken, zum Beispiel, werden nicht verarbeitet.

Wie kann ich das beheben?

Vielen Dank im Voraus!

Ich habe vor ein paar Jahren eine funktionierende Lösung mit Schaltflächen gepostet. Aber die Editierfelder funktionieren im MT5-Tester nicht. Sie können zwar kleine +/- Schaltflächen neben dem Bearbeitungsfeld hinzufügen und über diese bearbeiten. Aber es wird seine eigenen Nuancen sein.
 
ON_MOUSE_FOCUS_KILL scheint in keiner Weise verwendet zu werden. Es passiert nichts, wenn Sie es zu Map hinzufügen. Sie können ON_MOUSE_FOCUS_KILL auch auskommentieren und der Compiler überspringt es.
 

Hallo!

Ich erstelle ein Panel geerbt von CDialog (oder von CWndContainer, kein Unterschied).

Wenn ich ein Panel im Hauptfenster des Diagramms erstelle, funktioniert alles - das Panel wird mit der Maus bewegt und mit der Schließen-Taste geschlossen.

Wenn ich ein Panel in einem Unterfenster erstelle, dann funktioniert nichts - das Panel ist unbeweglich und reagiert nicht auf den Schließen-Button.

Frage: Wie kann ich erreichen, dass das Panel normal auf die Ereignisse des Diagramms im Unterfenster reagiert?

 

Hallo, ich habe es geschafft, mein Panel erfolgreich zu machen. Vielen Dank für Ihre erstaunliche Tutorial.

 
Vasiliy Pushkaryov #:
Vor ein paar Jahren habe ich eine funktionierende Lösung mit Schaltflächen gepostet. Aber Edit-Felder funktionieren nicht in MT5-Tester. Obwohl Sie kleine +/- Schaltflächen neben dem Edit-Feld hinzufügen und durch sie bearbeiten können. Aber es wird seine eigenen Nuancen geben.

Guten Tag!

Danke, ich habe es herausgefunden.

Jetzt andere Probleme - alle diese Panels aus der Standard-Bibliothek,

sind im MT4-Tester im Test-Visualisierungsmodus absolut nicht funktionsfähig.

Gibt es eine globale Lösung für dieses Problem, so dass ich nicht für jedes Bedienelement mit dem Tamburin tanzen muss?

 
Vitaliy Davydov #:

Guten Tag!

Danke, ich habe es hinbekommen.

Jetzt andere Probleme - alle diese Platten sind von der Standard-Bibliothek,

sind im MT4-Tester im Test-Visualisierungsmodus absolut nicht funktionsfähig.

Gibt es eine globale Lösung für dieses Problem, so dass ich nicht mit Tamburin für jedes Steuerelement tanzen müssen?

Was meinen Sie mit nicht funktionsfähig? In meinem MT4-Tester erfüllen sie ihre Funktionen.

Ich habe ein Beispiel gegeben, als ich von CButton geerbt und die Funktion cMyButton::isButtonPushed() hinzugefügt habe, um mit dem Tester zu arbeiten.

Das Gleiche habe ich für CEdit und CCheckBox getan und dann verwende ich immer meine Erben. Dies ist eine einmalige Aufgabe.

In der TestPush-Datei gab es eine Beispielfunktion checkPushingButtons():

void OnTick()
{
    if(MQLInfoInteger(MQL_VISUAL_MODE)) ExtDialog.checkPushingButttons();
}

//+------------------------------------------------------------------------------------------------------------------+
//| Für den Tester und OnTick. Prüfen wir, ob die Schaltfläche (oder das Objekt) gedrückt ist
//+------------------------------------------------------------------------------------------------------------------+
void CAppWindowCorrectMinimization::checkPushingButttons()
{
   if(m_button1.isButtonPushed())    print1();
   if(m_button2.isButtonPushed())    print2();
}


Hier ist von meinem Arbeitscode:

//+------------------------------------------------------------------------------------------------------------------+
//| Für den Tester und OnTick. Prüfen wir, ob die Schaltfläche (oder das Objekt) gedrückt ist
//+------------------------------------------------------------------------------------------------------------------+
void cInterface::checkPushingButttons()
{
  if(btnOnOff.isButtonPushed())    OnClickOnOff();
  if(btnLong.isButtonPushed())     OnClickLong();
  if(btnShort.isButtonPushed())    OnClickShort();

  if(btnCloseOff.isButtonPushed()) OnClickCloseOff();
  if(btnProtocol.isButtonPushed()) OnClickProtocol();
  if(btnOpposMA6.isButtonPushed()) OnClickOpposMA6();

  if(editMA2plus.isEditChanged())  OnEditMA2plus();
  if(editPunct.isEditChanged())    OnEditPuncture();

D.h. im Endeffekt besteht der Unterschied zwischen der Arbeit ohne Tester und der Arbeit mit einem Tester darin, dass wir eine einzige Funktion checkPushingButttons() hinzufügen, in der wir jedem Steuerelement einen String hinzufügen und per Häkchen prüfen, ob es sich um einen Push oder eine Eingabe handelt.

Bereiten Sie Vorlagen vor, machen Sie es ein paar Mal, ich denke, dann werden Sie sich daran gewöhnen.

 

Hallo Vladimir,
zuerst möchte ich dir auch für dein tolles Tutorial danken. Ich habe ein Problem bei der Verwendung in einer Vorlage gefunden: Legen Sie einfach eine Ihrer Anwendungen in eine Vorlage für ein leeres Diagramm. Nach dem Laden dieser Vorlage wird die Anwendung zweimal angezeigt, wie auf dem Bild zu sehen. Haben Sie eine Idee, wie man das beheben kann?

Ich danke Ihnen im Voraus

Dateien:
 

Warum kann das Panel/Fenster nicht über die Diagrammgrenzen hinaus gezogen/verschoben werden?

Was ist der Unterschied zur easyfastgui-Bibliothek von Anatoli?