Diskussion zum Artikel "MQL als Darstellungsmittel für graphische Schnittstellen von MQL-Programmen (Teil 3). Formular-Designer"

 

Neuer Artikel MQL als Darstellungsmittel für graphische Schnittstellen von MQL-Programmen (Teil 3). Formular-Designer :

In diesem Artikel schließen wir die Beschreibung unseres Konzepts zum Aufbau der Fensterschnittstelle von MQL-Programmen unter Verwendung der Strukturen von MQL ab. Ein spezialisierter grafischer Editor erlaubt es, das Layout, das aus den Basisklassen der GUI-Elemente besteht, interaktiv zu erstellen und es dann in die MQL-Beschreibung zu exportieren, um es in Ihrem MQL-Projekt zu verwenden. Hier stellen wir das interne Design des Editors und ein Benutzerhandbuch vor. Die Quellcodes sind beigefügt.

Der Editor ist für die Klassen der Schnittstellenelemente der Standardbibliothek konzipiert. Um ähnliche Werkzeuge für andere Bibliotheken zu erstellen, müssen Sie die spezifischen Implementierungen aller abstrakten Entitäten aus dem vorgeschlagenen Markup-System schreiben. Gleichzeitig sollten Sie sich von der Implementierung der Markup-Klassen für die Standardbibliothek leiten lassen.

Es ist zu beachten, dass die Definition der "Bibliothek der Standardkomponenten" sachlich nicht korrekt ist, da wir sie im Zusammenhang mit unseren vorangegangenen Artikeln erheblich modifizieren und in den parallelen Versionszweig im Ordner ControlsPlus legen mussten. Hier werden wir sie weiterhin verwenden und modifizieren.

Listen wir die Arten von Elementen auf, die vom Editor unterstützt werden sollen.

  • Container CBox mit horizontaler (CBoxH) und vertikaler (CBoxV) Ausrichtung,
  • CButton,
  • CEdit Eingabefeld,
  • CLabel,
  • SpinEditResizable,
  • CDatePicker Kalender,
  • Dropdown-Liste ComboBoxResizable,
  • Liste ListViewResizable,
  • CheckGroupResizable, und
  • RadioGroupResizable.

Alle Klassen gewährleisten eine adaptive Größenanpassung (einige Standardtypen konnten das am Anfang, während wir bei den anderen erhebliche Änderungen vornehmen mussten).

Bearbeitung des Formulars

Bearbeitung des Formulars

Autor: Stanislav Korotky

 
Das war stark!
 
Herzlichen Glückwunsch!!! Tolle Arbeit und Artikel.
 
Endlich ein anständiger Wettbewerb (ich meine das Ergebnis). Also, festhalten! )))))
 

Der visuelle Editor sollte weiterhin die manuelle Bearbeitung von Elementen ermöglichen - Dehnen, Verschieben, Eingeben von Text, Kopieren usw. Hilfskennzeichnungen sind wünschenswert.

Dieser Editor ist vielversprechend, obwohl ich keine Ahnung habe, wie der Autor die anderen Anforderungen realisiert, da ich seine Technologie nicht verstehe. Er "steht auf den Schultern" der Standardbibliothek und gibt einerseits einen kräftigen Schub nach vorne, andererseits erbt er deren Einschränkungen. Sie ist nicht für eine groß angelegte Transformation gedacht... Eine Menge Funktionalität wird von oben hinzugefügt werden müssen.

Liste der Anforderungen an den zukünftigen Editor:

1. Manuelle Anpassung von Elementen.

2. Kopieren von Elementen.

3) Gleichzeitige Verwaltung der Eigenschaften einer Gruppe von Elementen.

4. Hilfskonstruktion.

5. Mehrfenstermodus.

6. Erstellen von Fenstern verschiedener Typen.

7. Unterstützung für Fenstereigenschaften: "immer oben", andere blockierend, mit/ohne Minimierung.

8. Parallele Bearbeitung von Fenstern.

9. Löschen von Fenstern.

Das ist alles für den Moment.


Soweit ich weiß, bestehen die SB-Controller aus MT-Objekten, was einerseits das System der Interaktion mit den Elementen und der manuellen Anpassung vereinfacht (vor langer Zeit hatte ich einen Editor, der auf MT-Objekten basierte, und es war nicht schwer, ihn zu erstellen), andererseits (wenn man diese Vereinfachung akzeptiert) - alle Vorteile von Kanvas (darunter Geschwindigkeit, visuelle Effekte und vieles mehr) wegnimmt. Das heißt - der "Doping-Effekt" der Verwendung von SB bei der Erstellung eines Editors schränkt dessen Entwicklung stark ein. Aber, mal sehen...

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.
 
Interessanterweise kann der Autor auch ohne Kanvas Hilfsauszeichnungen vornehmen, wenn er das Problem der manuellen Einrichtung von Elementen löst. Genau das habe ich getan. Natürlich ist das Markup auf der Leinwand visuell cooler, aber im Sharpe-Editor zum Beispiel ist das Markup zwar spärlich, aber praktisch. Nur ein paar Zeilen helfen bei der Positionierung von Controllern. Ich war überrascht, als ich mir das nach der Erstellung meines Markups ansah.

Die Taskleiste muss auch gemacht werden. Vorzugsweise.
 
Das ist sehr gut!
Herzlichen Glückwunsch!

Es ist erstaunlich, wie MT5 im Laufe der Zeit immer besser wird.
Ich denke, dass in naher Zukunft jeder in der Lage sein wird, eine beliebige grafische Schnittstelle zu erstellen und einzurichten, die Ihren Bedürfnissen entspricht.
 
Ein neues Beispiel für ein Programm mit GUI, das durch deklaratives MQL-Layout-Design erstellt wurde, ist in der Codebasis veröffentlicht - ChartBrowser.
ChartBrowser
ChartBrowser
  • www.mql5.com
This is an utility which allows you to list all open charts, indicators, expert advisers, and scripts in alphabetic order, and switch between them.
 

Hallo,

Ich stehe vor dieser Art von Situation in einem meiner Laptops.

Alles sieht winzig aus, außer den Textbeschriftungen.

Der Wert von "TerminalInfoInteger(TERMINAL_SCREEN_DPI)" ist 192.

Wissen Sie, wie man das Problem lösen kann? Ich dachte, die Bibliotheken würden sich automatisch an meine Bildschirmeinstellungen anpassen.


 
Guilherme Mendonca #:

Hallo,

Ich stehe vor dieser Art von Situation in einem meiner Laptops.

Alles sieht winzig aus, außer den Textbeschriftungen.

Der Wert von "TerminalInfoInteger(TERMINAL_SCREEN_DPI)" ist 192.

Wissen Sie, wie man das Problem lösen kann? Ich dachte, die Bibliotheken würden sich automatisch an meine Bildschirmeinstellungen anpassen.


Leider habe ich keine Möglichkeit, sie unter verschiedenen Umgebungen zu testen. Die Bibliothek basiert auf Standard-Steuerungen (mit kleinen Korrekturen, die nichts mit dpi zu tun haben). Wenn es also irgendwie schief geht, scheint das ein allgemeines Problem zu sein, nicht das der Bibliothek.

Aber ich denke, Sie sollten zuerst Ihre Windows-Skalierungseinstellung überprüfen.

 
Guilherme Mendonca #:

Ich stehe vor dieser Art von Situation in einem meiner Laptops.

Nur eine Idee - versuchen Sie, Defines.mqh zu patchen:

#define  CONTROLS_FONT_SIZE                  (-10)

Das Minuszeichen wird hinzugefügt.

Oder eine andere Idee:

#define  CONTROLS_FONT_SIZE                  ((int)(10.0 / (TerminalInfoInteger(TERMINAL_SCREEN_DPI) / 96.0)))
Lassen Sie mich wissen, ob eine der beiden Varianten hilft.