Galerie der in MQL geschriebenen UIs - Seite 10

 

...Und zu guter Letzt heute noch eine Frechheit - eine Kopie des ME-Einstellungsfensters.


Hier ist es einfacher zu verstehen, welches Fenster "nicht echt" ist.))

 
Реter Konow #:

Ja, klar. Das war kein Problem.

Frag mich nicht wie, ich kann mich an nichts erinnern. ))))))

Nikolai wird besser antworten.

Es ist erstaunlich, denn sogar das eingebaute Panel von MQ fast trading hat einen solchen Fehler!

 
Aleksey Vyazmikin #:

Erstaunlich, denn sogar das eingebaute Panel von MQ fast trading ist mit einem solchen Fehler ausgestattet!

Man muss nur die Eigenschaften der Objekte kontrollieren. Der Algorithmus muss wissen, über welchem Objekt sich der Cursor befindet und welches Objekt im "Fokus" ist. Ändern Sie die Eigenschaft des Objekts am unteren Rand, so dass es nicht auf den Cursor und den Klick reagiert. Ich glaube ja, aber ich kann mich irren, weil ich mich nicht erinnern kann. Es ist schon Jahre her.

 
Ich erinnere mich, dass mein Algorithmus das Scrollen des Diagramms ausschaltete, während sich der Cursor über meinem Fenster befand und ich etwas darin scrollte. Als der Cursor dann in den freien Bereich des Diagramms zurückkehrte, aktivierte der Algorithmus das Scrollen wieder.
 
Реter Konow #:
Ich erinnere mich

Können wir es nicht jetzt anschauen?

 
Aleksey Vyazmikin #:

Können wir es uns nicht jetzt ansehen?

Ich habe Zehntausende von Codezeilen, die über Dutzende von Dateien in meinem Archiv verstreut sind, und ich kann mich an nichts erinnern. )))) Ich werde versuchen, es mir in Ruhe anzusehen.

 
Реter Konow #:

Ich habe Zehntausende von Codezeilen, die über Dutzende von Dateien in meinem Archiv verstreut sind, und ich kann mich an nichts erinnern. )))))) Ich werde versuchen, in Ruhe nachzuschauen.

Oh, wie ich das verstehe, ich habe es auch auf verschiedenen Computern... Wenn man versucht, alles zusammenzusetzen, merkt man, dass man den Sinn des Codes nicht versteht :) Jetzt habe ich angefangen, viele Kommentare in den Code zu schreiben - das ist praktisch, auch wenn es beim Schreiben des Codes eine unnötige Zeitverschwendung zu sein scheint, aber wenn man ein Jahr später darauf zurückkommt, ist es sehr hilfreich.

 
Aleksey Vyazmikin #:

Oh wie ich das verstehe, ich habe es auch auf verschiedenen Computern..... wenn man versucht, alles zusammenzubringen, merkt man, dass man den Sinn des Codes nicht versteht :) Jetzt habe ich angefangen, viele Kommentare in den Code zu schreiben - das ist praktisch, auch wenn es beim Schreiben des Codes wie eine unnötige Zeitverschwendung erscheint, aber wenn man ein Jahr später darauf zurückkommt, ist es sehr hilfreich.

Ich fürchte, wenn ich ins Archiv komme, wird die Galerie nie enden, lol.)))))) Es gibt dort einen Konstruktor, und es ist sehr einfach, neue Fenster zu erstellen. Und was ist, wenn ich den visuellen Editor fertigstellen will...? Dann sitze ich monatelang fest, und wozu? ))))))

 
Aleksey Vyazmikin #:

... Jetzt habe ich angefangen, eine Menge Kommentare in den Code zu schreiben - das ist praktisch, auch wenn es beim Schreiben von Code wie eine unnötige Zeitverschwendung erscheint, aber wenn man ein Jahr später darauf zurückkommt, hilft es sehr.

Ich stimme mit den Kommentaren völlig überein. Man sollte auf jeden Fall Erklärungen zum Code schreiben.

 
Aleksey Vyazmikin #:
Ich habe keine Erfahrung in der Entwicklung solcher Schnittstellen, aber das, was ich aus verschiedenen Quellen verwendet habe, hatte einen erheblichen Nachteil, nämlich dass manchmal(!) andere Objekte auf dem Diagramm durch sie hindurchgeklickt wurden. Konnten Sie dieses Problem lösen?

Meine Schnittstellen waren natürlich wesentlich einfacher. Ich habe kein Canvas verwendet, sondern einfach ein Panel aus Standardsteuerelementen gebaut. Um zu verhindern, dass andere Objekte im Diagramm durchscheinen, habe ich alle Fensterkomponenten einmal pro Minute neu gezeichnet:

if (iTime(_Symbol,PERIOD_M1,0) > LastMinute && !IsTesting()) { 
   LastMinute = iTime(_Symbol,PERIOD_M1,0);
   for (int i = 0; i < 45 ; i++) {
      long tf = ObjectGetInteger(0, Controls[i], OBJPROP_TIMEFRAMES);
      if (ObjectSetInteger(0, Controls[i], OBJPROP_TIMEFRAMES, -1)) 
         ObjectSetInteger(0, Controls[i], OBJPROP_TIMEFRAMES, tf);
   }
}

Hier ist Controls ein Array mit Komponentennamen.