Diskussion zum Artikel "MQL als Darstellungsmittel für graphische Schnittstellen von MQL-Programmen. Teil 1"

 

Neuer Artikel MQL als Darstellungsmittel für graphische Schnittstellen von MQL-Programmen. Teil 1 :

Dieser Artikel schlägt ein neues Konzept zur Beschreibung der Fenster-Schnittstelle von MQL-Programmen vor, wobei die Strukturen von MQL verwendet werden. Spezielle Klassen transformieren das sichtbare MQL-Markup in die GUI-Elemente und erlauben es, diese zu verwalten, ihre Eigenschaften einzustellen und die Ereignisse in einer einheitlichen Weise zu verarbeiten. Es enthält auch einige Beispiele für die Verwendung des Markups für die Dialoge und Elemente einer Standardbibliothek.

Warum wird das Layout vom Code getrennt und in einer speziellen Sprache beschrieben? Hier sind die grundlegenden Vorteile eines solchen Ansatzes.

  • Visuelle Darstellung von hierarchischen Beziehungen zwischen Elementen und Containern;
  • Logische Gruppierung;
  • Einheitliche Definition von Layout und Ausrichtung;
  • Einfaches Schreiben der Eigenschaften und ihrer Werte;
  • Deklarationen ermöglichen die Implementierung der automatischen Generierung des Codes unter Beibehaltung des Lebenszyklus und der Kontrolle der Elemente, wie z.B. Erstellen, Einrichten, Interagieren und Löschen;
  • Verallgemeinerte Abstraktionsebene, d.h. allgemeine Eigenschaften, Zustände und Initialisierungs-/Verarbeitungsphasen, was die Entwicklung der GUI unabhängig von der Codierung ermöglicht;
  • Wiederholte (mehrfache) Verwendung von Layouts, d.h. dasselbe Fragment kann mehrfach in verschiedenen Dialogen enthalten sein;
  • Dynamische Inhaltsimplementierung/-generierung on-the-fly, ähnlich wie beim Wechsel zwischen Registerkarten, wobei für jede Registerkarte ein spezifischer Satz von Elementen verwendet wird;
  • Dynamische Erzeugung von "Steuerelementen" innerhalb des Layouts, wobei sie in einem einzigen Array von Zeigern auf die Basisklasse gespeichert werden, wie z.B. CWnd im Falle der Standard-MQL-Bibliothek; und
  • Verwendung eines speziellen Grafikeditors für das interaktive Oberflächendesign — in diesem Fall fungiert das spezielle Format zur Beschreibung der Layouts als Bindeglied zwischen der Außendarstellung des Programms und seinem ausführenden Teil in der Programmiersprache.

Für die MQL-Umgebung wurden nur einige wenige Versuche unternommen, einige dieser Probleme zu lösen. Insbesondere wird ein visueller Dialogdesigner in dem Artikel Wie man Objektklassen entwirft und baut vorgestellt. Er arbeitet auf der Grundlage der Bibliothek MasterWindows. Die Möglichkeiten zur Anordnung von Layouts und die Liste der unterstützten Elementtypen sind darin jedoch erheblich eingeschränkt.

Ein fortschrittlicheres Layoutsystem, wenn auch ohne visuellen Designer, wird in den Artikeln Verwendung von Layouts und Containern für GUI Controls: Die CBox Klasse und Die CGrid-Klasse . Sie unterstützt alle Standard-Steuerelemente und andere, die von CWndObj oder CWndContainer geerbt wurden, überlässt aber dennoch dem Benutzer die Routinekodierung zum Erstellen und Anordnen von Komponenten.

Konzeptionell ist dieser Ansatz mit Containern sehr fortschrittlich (wenn es ausreicht, seine Popularität in praktisch allen Markup-Sprachen zu erwähnen). Daher werden wir ihn beherzigen. In einem meiner früheren Artikel (Anwendung von OLAP im Handel (Teil 2): Die Visualisierung der Ergebnisse der interaktiven, mehrdimensionalen Datenanalyse) schlug ich eine Modifikation der Container CBox und CGrid sowie einige Steuerelemente zur Unterstützung der "Gummi"-Eigenschaften vor. Im Folgenden werden wir diese Entwicklungen nutzen und verbessern, um das Problem der automatischen Anordnung von Elementen am Beispiel der Objekte einer Standardbibliothek zu lösen.

Autor: Stanislav Korotky