Diskussion zum Artikel "Grafische Interfaces I: Vorbereitung der Bibliotheksstruktur (Kapitel 1)" - Seite 2
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Sehr gut. Wenn möglich, mehr Bilder mit Beispielen von grafischen Schnittstellen. Im Allgemeinen ist das Thema sehr notwendig: vor langer Zeit war es notwendig, mit der Dokumentation der Standardbibliothek zu beginnen.
Vielleicht habe ich die Frage vorher falsch verstanden.
Mit der Verwendung von Klassen aus der Standardbibliothek meinte ich nur Klassen dieser Art:
Das heißt, diese Klassen, mit denen Sie primitive Objekte erstellen können, erhalten und ändern ihre Eigenschaften.
Aber (um das klarzustellen) ich verwende nicht den Teil der Standardbibliothek, der für die Erstellung von grafischen Oberflächen angeboten wird. Dies ist ein völlig separates Projekt.
P.S. Es wird eine Menge Bilder und Beispiele geben (möglichst detailliert).
Vielleicht habe ich die Frage vorher falsch verstanden.
Mit der Verwendung von Klassen aus der Standardbibliothek meinte ich nur Klassen dieser Art:
Das heißt, diese Klassen, mit denen Sie primitive Objekte erstellen können, erhalten und ändern ihre Eigenschaften.
Aber (um das klarzustellen) ich verwende nicht den Teil der Standardbibliothek, der für die Erstellung von grafischen Oberflächen angeboten wird. Dies ist ein völlig separates Projekt.
P.S. Es wird eine Menge Bilder und Beispiele geben (möglichst detailliert).
Ah, jetzt verstehe ich.
Und warum haben Sie sich entschieden, Ihr Projekt nicht auf der GUI-Bibliothek von MQ aufzubauen? Vielleicht wäre es einfacher, sie zu erweitern und zu vertiefen?
Übrigens habe ich eine eigene GUI-Bibliothek, es wäre interessant, Konzepte zu vergleichen.
Ah, ich verstehe.
Warum haben Sie sich entschieden, Ihr Projekt nicht auf der GUI-Bibliothek von MQ aufzubauen? Vielleicht wäre es einfacher, sie zu erweitern und zu vertiefen?
Übrigens habe ich eine eigene GUI-Bibliothek, es wäre interessant, die Konzepte zu vergleichen.
Ich habe meine Gedanken dazu ganz am Anfang dieses Artikels dargelegt. Zusammenfassend lässt sich sagen, dass man (meiner Meinung nach) das Projekt von Grund auf neu beginnen sollte, um es richtig zu machen.
Ich denke, dass die ersten 14 Artikel dieser Reihe es Ihnen bereits ermöglichen werden, einen angemessenen Vergleich der Konzepte vorzunehmen. Es gibt hier viele Nuancen, ohne die es unmöglich war, eine hohe Qualität zu erreichen.
Ein interessantes und nützliches Projekt ist entstanden! Ich werde mich auf die Veröffentlichung Ihrer Artikel freuen!
Mit freundlichen Grüßen...
Guten Tag!
Ich habe ein zwiespältiges Gefühl, wenn ich mich mit der erstellten Bibliothek vertraut mache. Auf der einen Seite bin ich erstaunt über die Flexibilität und Beweglichkeit der Bibliothek. Die geleistete Arbeit ist enorm, wofür man natürlich ein großes DANKESCHÖN sagen kann!
Andererseits ist die Umsetzung einiger Punkte rätselhaft, da sie die Arbeitsintensität bei der Erstellung neuer Formulare erhöht.
Betrachten wir zum Beispiel die Funktion zum Verschieben des Formulars auf dem Graphen.
In der Funktion ist es notwendig, alle erstellten Formularobjekte aufzuzählen. Und warum? Weil alle erstellten Elemente in den Container (Array) des Formulars selbst eingefügt werden. Warum müssen Sie alle erstellten Elemente in der Funktion aufzählen? Warum kann man nicht einfach eine Schleife um den Container machen und die Koordinaten aller Elemente ändern?
Das Gleiche gilt für andere Methoden. Zum Beispiel werden in der Funktion Hide() alle Elemente ausgeblendet, indem eine Schleife durch die Formularelemente gezogen wird, und in der Funktion Delete() werden alle Elemente diskret aufgelistet. Unklar.
Dies führt dazu, dass Sie sich beim Hinzufügen neuer Elemente zum Formular alle STANDARD-Funktionen merken müssen, bei denen Sie jedes neue Element angeben müssen. Das ist sehr unpraktisch. Das Gleiche gilt für den Fokus auf einem Element. Wenn ein Element im Fokus ist, dann sollte seine Anzeige entsprechend dem Algorithmus geändert werden, WANN es erstellt wird, z.B. werden für bildbasierte Schaltflächen die Bilder "BmpFileOn" und "BmpFileOff" angegeben. Dort könnte man auch andere Eigenschaften für den Fokus festlegen: Rahmenfarbe, Hintergrundfarbe, Textfarbe, Textgröße und so weiter. In diesem Fall ist es nicht notwendig, dies in die Fokus-Definitionsfunktion zu schreiben, sondern Sie müssen lediglich das Array der Elemente durchlaufen und ihre Eigenschaften entsprechend den Eigenschaften "im Fokus"/"nicht im Fokus" einstellen.
Zusammenklappen...
Die Bibliothek ist zunächst so konzipiert, dass das Formular unter der Kopfzeile eingeklappt wird (nach oben). Gleichzeitig bleibt die Kopfzeile dort, wo das Formular ist. Ich versuche, das Standardverhalten des erstellten Formulars zu implementieren, d.h. wenn das Fenster minimiert wird, wird das Fenster nach unten minimiert und nur die Kopfzeile bleibt (unten). Außerdem versuche ich, zwei Modi des Formulars zu implementieren: "Standard", "minimiert" und natürlich minimiert.
Bereits bei der Erstellung meiner Schaltflächen bin ich auf alle oben genannten Probleme gestoßen. Und die Entwicklung hat gerade erst begonnen....
Ich glaube auch, dass es universeller wäre, nicht nur einen Container (Array) für die Speicherung von erstellten Elementen und Operationen auf ihnen zu erstellen, sondern eine Hierarchie von Containern. Das heißt, es wird ein einziger Container für das gesamte Formular erstellt, der es ermöglicht, allgemeine Aktionen auf dem Formular auszuführen: Verschieben, Löschen, Ausblenden und so weiter. Dieser Container sollte zwei weitere Container enthalten: den Container der Kopfelemente und den Container der Formularelemente selbst. Ein dritter Container ist ebenfalls möglich: der Container für das Untergeschoss, falls es einen gibt. Der Container des Formulars selbst kann wiederum Container mit Blöcken für die Platzierung von Elementen auf dem Formular enthalten. In einer solchen Implementierung sollte z. B. das Verkleinern des Formulars dazu führen, dass die Elemente des Formular-Containers selbst gelöscht und die Elemente des Kopf-Containers verschoben werden. Führen Sie bei allgemeinen Aktionen Operationen an den Containern selbst durch. Das heißt, wenn das Formular selbst verschoben wird, dann wird auch der Container mit den Elementen des gesamten Formulars (der Anwendung) verschoben.
Ich hoffe, der Autor wird meine Idee verstehen. :)
Ich wiederhole noch einmal: die geleistete Arbeit ist großartig, nützlich und informativ. Aber jeder Schritt weg von der Darstellung des Autors fängt an, Schwierigkeiten zu schaffen. Natürlich gibt es keine allgemeingültigen Lösungen. Aber einige allgemeine Standardfunktionen der Bibliothek könnten wirklich universell gemacht werden.
Mit freundlichen Grüßen, Alexey.
...Ich hoffe, dass der Autor meinen Standpunkt verstehen wird.....
Mein Standpunkt ist klar. Ich danke Ihnen.
Die Bibliothek befindet sich noch in der Entwicklung. Sie ist noch lange nicht die letzte Version und viele Teile werden noch optimiert und weiterentwickelt.
Sie können die neueste Version (2016.11.20) in diesem Artikel herunterladen: GUI X: Text Input Box, Picture Slider and Simple Controls (build 5).
Ich verstehe, was Sie meinen. Ich danke Ihnen.
Die Bibliothek befindet sich noch in der Entwicklung. Sie ist bei weitem nicht die neueste Version und viele Teile davon werden noch optimiert und weiterentwickelt.
Sie können die neueste Version (2016.11.20) in diesem Artikel herunterladen: GUIs X: Text Input Box, Picture Slider and Simple Controls (build 5).
Ich weiß, es ist nicht die letzte Version. :) Ich habe die neueste Version für mt4 heruntergeladen und versuche, die Schnittstelle darauf zu bauen. Ich gehe aber davon aus, dass die Bibliothek für mt5 auch unter mt4 funktioniert, wenn keine mt5-spezifischen Mechanismen verwendet wurden.
Ich hoffe, dass die Kommentare und Vorschläge, die ich geäußert habe, in den nächsten Versionen der Bibliothek berücksichtigt werden und sie noch flexibler und universeller wird, und gleichzeitig einfacher aus der Sicht der praktischen Anwendung. Während der Entwicklung der Bibliothek wurde "kaskadierenden" Mechanismus der Vererbung von Klassen, die gleiche ich vorgeschlagen und für die Bildung von Form-Elemente, das heißt, die Vererbung von Containern verwendet. Und der Nachkomme kann nicht nur globale Eigenschaften (der gesamten Form-Anwendung), sondern auch Eigenschaften des Elternteils: Ankerpunkte, Sichtbarkeit, Bewegung und so weiter. :)
Ich werde die Veröffentlichung von neuen Artikeln und die Entwicklung der Bibliothek mit großer Ungeduld verfolgen.
Mit freundlichen Grüßen, Alexey.
Ich weiß, es wird nicht das letzte Mal sein. :) Ich habe die neueste Version für mt4 heruntergeladen und versuche, die Schnittstelle darauf aufzubauen. Aber ich verstehe, dass die Bibliothek für mt5 wird auch unter mt4 arbeiten, wenn es nicht verwendet wurden Mechanismen speziell für mt5.
Die MT4-Version wird nicht von meiner Seite aus entwickelt werden. Nur für MT5.
Ich hoffe, dass die Kommentare und Vorschläge, die ich geäußert habe, in den nächsten Versionen der Bibliothek berücksichtigt werden und sie noch flexibler und universeller wird, und gleichzeitig einfacher vom Standpunkt der praktischen Anwendung.
Am Anfang ist es schwierig, etwas zu sagen. Man kann lange theoretisch darüber nachdenken, wie es besser sein könnte. Bei realen Tests wird alles klar sein.
Die Version für MT4 wird von meiner Seite aus nicht mehr weiterentwickelt. Nur noch für MT5.
Am Anfang ist es schwierig, etwas zu sagen. Theoretisch kann man lange darüber nachdenken, wie es besser sein könnte. Alles wird sich bei realen Tests zeigen.
Ja, ich habe schon gelesen, dass für mt4 keine Version entwickelt wird - das ist nicht schlimm.
Nun, die Tatsache, dass nur Tests zeigen können, wie man eine Bibliothek besser bauen kann, ist unbestreitbar. Aber aus der Sicht von OOP hat die vorgeschlagene Methode die besten Chancen auf eine praktische Umsetzung. :)