Mein Ansatz. Der Kern ist der Motor. - Seite 171

 
Vasiliy Sokolov:

...

3) Ja, bei der namentlichen Adressierung müssen Sie alle Parameter angeben. Vor allem aber gibt es kein einziges monolithisches Ereignismodell. Wenn Sie Ihr eigenes Modell wollen, können Sie es gerne haben. Es ist elementar, es zu machen. Aber ohne Timer geht es nicht.

Die Ereigniswarteschlange ist ein verallgemeinerter Algorithmus zur zuverlässigen Behandlung von Ereignissen. Der Benutzer stellt nichts zusammen; die von ihm erzeugten Ereignisse gelangen von selbst in die Warteschlange. Die Warteschlange selbst besteht in 99,9 % der Fälle aus nur einem Ereignis.

Nun, die Implementierung ist ähnlich wie meine, aber meine ist viel einfacher für den Benutzer.


  • E_Window_Element(value); Übergabe von Wert an Element:
  • E_Window_Element(); Ermittelt den Wert des Elements:

  • E_Window_Element(M_COLOR, value); Grundfarbe einstellen.
  • E_Window_Element(T_COLOR, value); Farbe des Textes einstellen.
  • E_Window_Element(F_COLOR, value); Rahmenfarbe einstellen.


  • E_Window_Element(STATE, ON); Setzen des angeklickten Status.
  • E_Window_Element(STATE, OFF); Freigegebenen Zustand einstellen.
  • E_Window_Element(STATE, LOCKED_ON); Setzt den Sperrzustand.
  • E_Window_Element(STATE, LOCKED_OFF); Geschobener Zustand einstellen.
  • E_Window_Element(STATE, ON_H); Setzt den Status, wenn im Fokus geklickt wird.
  • E_Window_Element(STATE, OFF_H); Status auf Fokus setzen.


  • W_Window_name() Fenster öffnen.
  • W_Window_name(close) Fenster schließen.


Die Namen der Formularelement-Verschalungen werden automatisch in die Verbindungsdatei gedruckt und gelangen sofort in die Intellisense.

Vasily, können Sie intellisense Namen von Elementen und Fenstern in Ihrem MQL-Programm verwenden?


ZS Vasily, beachten Sie, wie viele Aktionen ein Wrapper pro Element ausführt. Und sie benötigt höchstens ZWEI Parameter. Oder keine.

 
Igor Makanu:

... Ich habe ein totales Fiasko mit dataGridView hatte - ich kann nicht in es mehr als 3-5 Sekunden schreiben) 10x11 Tabelle ist bereits kritisch, obwohl das Formular mit der Tabelle in einem separaten Thread ausgeführt wird

ZS: Ich habe vor 5 Jahren in Delphi ein StringGrid an MT4 angehängt. Ich hatte keine Probleme damit, aber es ging alles gut. Allerdings habe ich Probleme mit dataGridView von Microsoft, heute werde ich versuchen, mit SourceGrid zu experimentieren, laut Rückmeldungen ist es schneller als dataGridView

Versuchen Sie auchInfragistics Ultragrid. Das ist die coolste Sache der Welt. Wenn es ein Hilfsmittel gibt, das Ihre Handelsleistung verbessern kann, dann ist es diese Tabelle.

 
Dmitry Fedoseev:

...

Dmitry, es gibt ein Architekturmodell namens MVC. Der von mir vorgeschlagene Ansatz ist genau das Richtige. Also, wenn Sie es kritisieren, kritisieren Sie MVC in erster Linie und solche Lösungen wie Angular, ASP Net MVC, Ruby on Rails und andere Produkte, nicht würdig Ihrer fachlichen Aufmerksamkeit, durch den "Arsch" in Ihrer Meinung gemacht. Ich denke, es sollte Ihnen klar sein, warum ich nicht mit Ihnen streiten und die Richtigkeit meiner Entscheidung beweisen möchte - es ist einfach sinnlos.

 

In meinem Fall ist das Analogon der Aufnahme

GuiController::SendEvent("AskLabel", TextChange, 0, 0.0, DoubleToString(ask, Digits()));

ist der Eintrag

E_Trade_panel__AskLabel(DoubleToString(ask, Digits()));

In diesem Fall muss ich mich nicht an den Namen eines bestimmten Elements erinnern. Ich schreibe E_ und es erscheint eine Liste von Einträgen, ich gebe die ersten Buchstaben des Fensternamens ein und es erscheint eine Liste von Einträgen für ein bestimmtes Fenster, dann wähle ich den gewünschten Eintrag aus der Liste.

 

Ich frage mich, wie man eine Tabelle mit mindestens 100 Zellen ohne Intelligenz verbinden kann? Schließlich müssen Sie sich die Namen aller Zellen merken.

In meinem Fall wird jede Zelle automatisch nach Zeilen- und Spaltennamen benannt, und ihre Auswahl erfolgt über Intelligenzen. In Ihrer Version, Vasiliy, müssen Sie genau wissen, wie jede der 100 Zellen genannt wird.

Und wenn ich 10 komplexe Fenster mit vielen Elementen und großen Tabellen habe, wie viel Zeit würde ich dann für die Benennung der Elemente in den Aufrufen aufwenden? Ich würde erschöpft sein).


Und was ist, wenn die Namen in verschiedenen Fenstern gleich lauten?

 
Реter Konow:

Ich frage mich, wie Sie eine Tabelle mit mindestens 100 Zellen ohne Intellisense verbinden können?

Ich weiß nicht, Peter, weil Intellisense in MetaEditor funktioniert gut mit allen Variablen in C #, einschließlich Arrays, Strukturen, Basistypen, Methoden und sogar Klassen.

 
Vasiliy Sokolov:

Ich weiß nicht, Peter, weil Intellisense in MetaEditor funktioniert gut mit allen Variablen in C #, einschließlich Arrays, Strukturen, Basistypen, Methoden und sogar Klassen.

Werden Elementnamen angezeigt?

 
Реter Konow:

Werden Elementnamen angezeigt?

Ja, mit Prototypen:

:))

 
Vasiliy Sokolov:

Klar, mit Prototypen:

:))

Wassili, du verstehst das nicht.

GuiController::SendEvent("AskLabel", TextChange, 0, 0.0, DoubleToString(ask, Digits()));

Um den Wert eines Elements zu setzen, senden Sie seinen Namen. Das Feld "Ask" hat den Namen "AskLabel". Wo wird der Name des Elements in der Intellisense angezeigt?

 
Реter Konow:

Wassili, du verstehst das nicht.

Um den Wert eines Elements zu setzen, senden Sie seinen Namen. Das Feld "Ask" hat den Namen "AskLabel". Wo wird der Name des Elements in der Intellisense angezeigt?

Peter, ich habe das Gefühl, dass du etwas suchst, worüber du dich beschweren kannst.

Die Antwort ist nein, der Intelligenzler hat noch nie mit einem Textelement gearbeitet und wird dies auch nie tun. Aber wenn es sich nur um eine Frage handelt, ist es überhaupt kein Problem, die gleichen Definitionen miteinander zu verknüpfen.

s.s. Übrigens, bei Ihnen wird es auch nicht funktionieren:

__, EDIT,"Set lot", W,150,_,H,60,_,V_CURRENT,"1.00",