Galerie der in MQL geschriebenen UIs - Seite 42

 
Später werde ich eine Liste von Funktionen zur Verfügung stellen, die kurz vor der Implementierung stehen, weil sie bereits in früheren Versionen des Builders (vor 4 Jahren) funktionierten. Es ist durchaus realistisch, sie in neue Versionen aufzunehmen.
 

Ein Mangel an priorisierten Entwicklungsrichtungen führt nie zu guten Ergebnissen. Eine elementare Wahrheit, die alle professionellen Entwickler kennen. Vor 4 Jahren konnte ich keine fertige Version des Designers vorlegen, weil ich keinen Plan für die Fertigstellung hatte. Hätte ich einen Plan gehabt, wäre alles schon längst fertig gewesen. Der nächste Grund, das Projekt zu stoppen, sind fruchtlose Auseinandersetzungen mit den Meinungen anderer Leute im Forum. Debatten über Ansätze in der Programmierung oder die Notwendigkeit-Unnötigkeit der GUI als solche... Leider war das eine sinnlose Zeitverschwendung.

Was ist nun der Abschluss dieses Projekts? Die Antwort auf diese Frage ist sehr wichtig, denn sie entscheidet über die Richtung der weiteren Entwicklung.

Und so, wie ich es darstelle:

1. Software-Steuerung von Schnittstellenelementen.

Dies ist im Moment eine der Hauptaufgaben. Jetzt kann der Benutzer nur GUI-Ereignisse in der API-Datei "abfangen", aber keine Elementeigenschaften oder Parameterwerte erhalten/ändern. Wenn man die Komplexität abwägt, kann ich sagen, dass die Aufgabe einfach ist und vor der nächsten Version gelöst sein wird. Geben Sie dem Benutzer programmatischen Zugriff auf eine breite Palette von GUI-Elementen und Fenstereigenschaften.


2. reguläre und dynamische Tabellen .

Reguläre Tabellen wurden bereits implementiert. Ihre Funktion wurde wiederholt getestet. Funktionen wie das Ziehen und Ablegen von Spalten und Zeilen (Ändern ihrer Position in der Tabelle), das Zusammenklappen/Erweitern von Tabellenzeilen (Hinzufügen des Elements T_FOLDER) oder das Ausblenden/Entfernen von Spalten haben funktioniert. Die automatische Integration von Steuerelementen in die Tabelle hat funktioniert. So wurden beispielsweise Kontrollkästchen, Dropdown-Listen, Schaltflächen, Schieberegler, Eingabefelder mit Schaltflächen und einfache Eingabefelder von selbst in die Tabelle integriert, wenn das Schlüsselwort IS_TABLE zum Gruppenkopf hinzugefügt wurde. Die Werte in den Zellen konnten je nach Wert eingefärbt werden. Tabellen konnten sogar in Baumlisten eingebettet werden.

Aber lohnt es sich, die Zeit zu investieren, um alle alten Funktionen wiederherzustellen?

Das ist schwer zu sagen.

Meiner Meinung nach sollte man zunächst die grundlegenden Funktionen regulärer Tabellen wiederherstellen und dafür sorgen, dass sie gut funktionieren. Der Rest ist, wie es sich herausstellt.

Aber die Hauptsache in der Schnittstelle eines ernsthaften Handelsroboters sind dynamische Tabellen. Diejenigen, die in der Lage sind, einen endlosen Strom von Börsendaten durchzuleiten. Ich habe sie noch nie implementiert.

Fazit: Dynamische Tabellen sind eine Priorität.

(Wir müssen mit der Entwicklung beginnen.)


3. Baumlisten.

Ziemlich realisiertes GUI-Element, das schon viele Male überarbeitet wurde. Und es funktionierte jedes Mal besser. Die neueste Version ist besonders gut, aber sie ist noch nicht fertig. Wenn ich mich im Detail erinnere, kann ich es in ein oder zwei Tagen fertigstellen. Aber wie sehr brauchen Sie es in einer GUI? Ich denke, es kann nicht schaden, aber man sollte sich nicht zu sehr darauf versteifen.

Fazit: Die Baumliste ist keine Priorität für die weitere Entwicklung.

(Ich werde sie fertigstellen, wenn ich Zeit habe.)


4. Dynamische Fenster.

Die grundlegenden Mechanismen - Größenänderung, vertikales und horizontales Scrollen, Skalierung, Anpassung des skalierten Fensters an die Änderung der Diagrammgröße - funktionieren bereits gut. Aber es gibt eine Menge kleiner, ärgerlicher Fehler. Da die dynamischen Fenster vollständig sind, sind sie ideal für große dynamische Tabellen und lange Listen.

Fazit: Die Fertigstellung der dynamischen Fenster ist eine Priorität.

(Es kann ein paar Tage harter Arbeit mit Enthusiasmus erfordern.)


5. Gruppen- und Tabellenverkleinerer.

Die Elemente G_FOLDER und T_FOLDER haben in der Vergangenheit bereits sehr gut funktioniert. Wie sie jetzt funktionieren, weiß ich nicht, da ich noch keine Zeit hatte, sie zu testen. Interessanterweise habe ich bei der letzten Entwicklung der Funktion Elementphänomen die Verwaltung der Baumliste und dieser beiden Arten von Kollabierern vereinheitlicht. Eine Funktion verwaltete drei Elemente und war nicht mehr als 400 - 500 Zeilen groß (was für meine Verhältnisse nicht viel ist). Wenn ich diese Funktion wieder zum Laufen bringe (sie ist jetzt deaktiviert), werden alle drei Elemente perfekt funktionieren. Schauen wir mal.

Fazit: Die Elemente G_FOLDER und T_FOLDER sind nicht vorrangig.

(Ich werde es tun, wenn ich die Gelegenheit und Lust dazu habe).



Und die letzte vorrangige Aufgabe, die mir jetzt in den Sinn kam:

6. Erstellung eines Zweigs von Vorlagen für Gruppen von Elementen und Fenstern, die in der Auszeichnungssprache geschrieben sind.

Dies wird es den Benutzern ermöglichen, schnell und einfach die notwendige Schnittstelle für die Lösung von Aufgaben zu bauen, auch ohne tiefe Kenntnisse der Sprache.


Wenn jemand Gedanken zu den Prioritäten für die weitere Entwicklung hat, bitte mitteilen. Ich werde es zur Kenntnis nehmen.

 

Ja, die Programmverwaltung ist das Wichtigste, ein Muss für jeden, der die Engine benutzen wird.

Für mich sind die dynamischen Tabellen ein Muss. Ich brauche die Schnittstelle hauptsächlich für die Visualisierung von Ereignissen und Berichten in Echtzeit. Die Steuerelemente sind das Band, um sie zu verwalten (Filter, etc.) Mit der Umsetzung dieser könnte ich beginnen, die Engine zu integrieren.

Die zweite Priorität ist ein Vollbildfenster. Aber das ist sehr einfach - Sie haben das schon im Designer gemacht. Mit einer Taskleiste. Und vorübergehend kann ich das größtmögliche Fenster verwenden. Ich muss die Größe wählen, das ist schmerzhaft.

Die dritte Priorität ist die Grafik. Ich weiß nicht, wie schwierig das ist. Vielleicht sollten Sie die Standard-Kanvas-Tools verwenden, wenn sie flexibel genug sind. Ich habe noch nie etwas anderes als Fast And Furious Easy And Fast v1 ausprobiert.

So Gott will, ist die Motivation groß genug. Meistens schwindet sie nach einer Begegnung mit den Hatern. "Die guten Menschen sind in der Mehrheit, aber die bösen sind besser organisiert.

 
Edgar Akhmadeev Steuerelemente zu knapp bemessen. Mit der Implementierung dieser Funktionen könnte ich mit der Integration der Engine beginnen.

Die zweite Priorität ist ein Vollbildfenster. Aber das ist sehr einfach - im Designer ist das bereits möglich. Mit einer Taskleiste. Und vorübergehend kann ich das größtmögliche Fenster verwenden. Ich muss die Dimensionen aufnehmen, was schmerzhaft ist.

Die dritte Priorität ist die Grafik. Ich weiß nicht, wie schwierig das ist. Vielleicht sollte man die Standard-Kanvas-Tools verwenden, wenn sie flexibel genug sind. Ich habe es noch nie versucht, außer mit Fast And Furious Easy And Fast v1.

So Gott will, ist die Motivation groß genug. Meistens schwindet sie nach einer Begegnung mit den Hatern. "Die guten Menschen sind in der Mehrheit, aber die bösen sind besser organisiert".

1. Die programmatische Artikelverwaltung wird in der nächsten Version enthalten sein. Voraussichtlich in 7 - 10 Tagen.

2. Dynamische Tabellen sind "in Entwicklung". Wie lange es dauern wird, kann ich noch nicht sagen. Der Prozess kann sehr schnell sein.... oder nicht so schnell. Unbekannt.

3. Sie haben bereits ein Vollbildfenster. Probieren Sie es aus. Schreiben Sie in die Fenstereigenschaften "DINAMIC" statt "SETTINGS". Testen Sie es und schreiben Sie über Ihre Eindrücke.(Gehen Sie einfach zur Feldversion des Builders). Sie können die Größe ändern, indem Sie an den Rändern des Fensters ziehen oder mit der oberen Taste zoomen. Es gibt auch die Möglichkeit, mit einem Doppelklick auf die obere Leiste (wo der Fenstername steht), oder einfach das Fenster an der "Kappe" zu packen und nach oben zu ziehen, bis es sich selbst skaliert. Die gleichen Manipulationen funktionieren auch in umgekehrter Richtung.

4. Drucken Sie die API-Datei Ihres Fensters aus und posten Sie sie hier. Ich werde mir ansehen und verstehen, wie die Tabellen dort gedruckt werden. Dies ist wichtig für die zukünftige Implementierung der Softwareverbindung.


5. Ich werde ernsthaft über benutzerdefinierte Diagramme nachdenken. Ich habe Anatolys Implementierung gesehen, aber ich habe nicht versucht, dieses Element zu replizieren.

 

Eine wichtige Nuance bei der Arbeit mit einem dynamischen Fenster:

Das Fenster akzeptiert keine Elemente des Typs V_BOX, da diese ihre eigene Leinwand enthalten. Dies führt dazu, dass sich eine Leinwand mit einer anderen überschneidet. Daher sollte dieses Element zusammen mit allen Zeilen i, IN, "V1", ... auskommentiert werden.

Das heißt, die Gruppen, die im V_BOX-Element platziert sind, sollten sich nur im Fenster auf "MF" befinden. Sie müssen die Zeile i, IN, "V1" nicht speziell auskommentieren.

Wenn es nicht klappt, zeige ich es Ihnen morgen genauer. In Bildern.

 

Ein Beispiel für die Umwandlung des Einstellungsfensters in ein dynamisches Fenster:

(Klicken Sie auf das Bild)

 
Es lief erfolgreich, aber es scheint, als ob Sie ein bisschen zu viel gepostet haben, um zu wissen, wie man diese GUI-Bibliothek von Grund auf beherrscht.
 
Ich erwarte, dass weitere (7) LESSONS hinzugefügt werden, damit die Benutzer wissen, wie sie die Bibliothek nutzen können.
 
Wenn die Toolbox verkleinert wird, reagiert die Taskleiste am unteren Rand nicht sofort. Sie müssen zu einem anderen Diagramm wechseln und zurückklicken, bevor sich die Taskleiste nach unten bewegt. Ich bin nicht sicher, ob dies verbessert werden kann.
 
Dynamische Fenster scheinen noch nicht ausgereift zu sein. Mouse over wird beibehalten, nachdem die Maus die Position verlassen hat