Diskussion zum Artikel "Das MQL5-Kochbuch: Steuerelemente des Indikatorunterfensters - Die Schaltflächen"

 

Neuer Artikel Das MQL5-Kochbuch: Steuerelemente des Indikatorunterfensters - Die Schaltflächen :

In diesem Beitrag wird ein Beispiel für die Programmierung einer eigenen Benutzeroberfläche mit Steuerelementen der Art Schaltfläche betrachtet. Als Hinweis für den Anwender darauf, dass das besagte Steuerelement ansprechbar ist, richten wir es so ein, dass die Schaltfläche ihre Farbe ändert, wenn der Mauszeiger darüber fährt. Beim Darüberfahren des Mauszeigers wird die Farbe der Schaltfläche etwas dunkler, und beim Betätigen der Maustaster augenfällig noch dunkler. Außerdem erhält jede Schaltfläche weitere automatisch aufklappende Kurzinformationen. Auf diese Weise erhalten wir eine selbsterklärende Benutzeroberfläche.

Ebenfalls betrachtet werden in diesem Beitrag folgende Ereignisse: die Änderung der Position des Mauszeigers, der Zustand der linken Maustaste, der Linksklick auf ein Objekt sowie bei einer Änderung der Diagrammeigenschaften auftretende Ereignisse. Wir legen ein Schaltflächenfeld an, das die gesamte Fläche des Indikatorunterfensters einnimmt. Als Beispiel erstellen wir drei Zeilen mit jeweils vier Schaltflächen.

Der Indikator TestButtons.mq5 kann im Anhang zu diesem Beitrag heruntergeladen werden. Aus diesem Beispiel lässt sich ein recht interessantes Hauptmenü erstellen, wenn man den Gedanken weiterspinnt. Beispielsweise könnte der Anwender durch das Betätigen einer bestimmten Schaltfläche zu den für ihn interessanten Informationen gelangen. Die Anzahl der Schaltflächen kann beliebig erweitert werden.

MQL5 Cookbook: Indicator Subwindow Controls - Buttons

Autor: Anatoli Kazharski

 

Ein guter Artikel für Anfänger. Bei komplexeren Schnittstellen ist dieser Ansatz jedoch nicht mehr akzeptabel. Das erste, was ins Auge fällt:

for(int i=0; i<BUTTON_COLUMNS; i++)
     {
      for(int j=0; j<BUTTON_ROWS; j++)
        {
            ...
      ...
...
D.h. es wird eine starre Tabellenstruktur in den Algorithmus eingenäht und diese Konstruktion findet sich in fast allen Funktionen. Stellen wir uns nun vor, dass das Teilfenster mehrere grafische Elemente enthält, die in keiner Weise mit der Tabelle zusammenhängen. Für sie müssen wir ein eigenes Positionierungsmodell beschreiben, und das ist nicht gut. Das Positionierungsmodell sollte einheitlich und universell sein, d.h. in diesem Fall sollte das Layout "Tabelle" ein Spezialfall dieses Modells sein.
 
C-4:

Ein guter Artikel für Anfänger. Bei komplexeren Schnittstellen ist dieser Ansatz jedoch nicht mehr akzeptabel. Das erste, was ins Auge fällt:

D.h. es wird eine starre Tabellenstruktur in den Algorithmus eingenäht und diese Konstruktion findet sich in fast allen Funktionen. Stellen wir uns nun vor, dass das Teilfenster mehrere grafische Elemente enthält, die in keiner Weise mit der Tabelle zusammenhängen. Für sie müssen wir ein eigenes Positionierungsmodell beschreiben, und das ist nicht gut. Das Positionierungsmodell sollte einheitlich und universell sein, d.h. in diesem Fall sollte das Layout "Tabelle" ein Spezialfall dieses Modells sein.

Ja, Sie haben Recht. Ich werde versuchen, mir beim nächsten Mal etwas Originelleres einfallen zu lassen. )

In diesem Fall genügt es, ein eindimensionales Array und eine Schleife zu verwenden, um von dem Sonderfall wegzukommen.

 

Ich verstehe nicht, warum Sie OBJ_EDIT verwenden sollten.

Es wäre viel sinnvoller gewesen, die Standardschaltflächen aus der Bibliothek "wiederzubeleben" (so dass sie auch unter der Maus leuchten).

D.h. es scheint ein nützlicher Artikel zu sein, aber ich verstehe nicht, warum so ein Weg gewählt wurde.

ps: Ich beneide den Autor um seine Ergiebigkeit ;)

 
komposter:

...

Ich bin es bereits gewohnt, OBJ_EDIT zu verwenden, da es bei der Visualisierung im Tester angezeigt wird.

In diesem Fall könnten Sie jedes beliebige Objekt für das Beispiel verwenden. Es ist ja schließlich ein kreativer Prozess. )

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
 
komposter:

Ich verstehe nicht, warum Sie OBJ_EDIT verwenden sollten.

Es wäre viel nützlicher, die Standardschaltflächen aus der Bibliothek "wiederzubeleben" (so dass sie auch unter der Maus leuchten).

D.h. es scheint ein nützlicher Artikel zu sein, aber ich verstehe nicht, warum ein solcher Weg gewählt wurde.

ps: Ich beneide den Autor um seine Ergiebigkeit ;)

In Wirklichkeit sind Standard-Schaltflächen sehr schlüpfrig Steuerelement, weil in erster Linie nicht unterstützt Rahmen Farbe (obwohl es sehr seltsam, warum), und in den zweiten Platz, je nach Art des Rahmens BORDER_FLAT, BORDER_RAISED visuell deutlich außerhalb seiner Lage positioniert, ich sage nicht, dass zusätzlich zu diesem ändern ihre Schatten in Abhängigkeit von dem Zustand des Drückens und sehr langsam, um seine Anzeige ohne ChartRedraw ändern. In Wirklichkeit bietet die Schaltfläche außer ihrer abgehackten Oberfläche a la Windows 3.11 keine Vorteile im Vergleich zu anderen Elementen. Ja, es gibt ein spezielles Feld OBJ_SELECTED, das anzeigt, ob die Schaltfläche gedrückt ist oder nicht, aber in Wirklichkeit gibt es keine Probleme, ein eigenes Objekt OBJ_EDIT zu erstellen, das das Kennzeichen des Drückens enthält.
 
Und die Knöpfe sind gar keine Knöpfe).
 
komposter:

Es wäre viel nützlicher, Standardschaltflächen aus der Bibliothek zu "animieren" (so dass sie auch unter der Maus leuchten würden).

Und ich frage mich, ob es einen einzigen professionellen Entwickler gibt, der die Standardbibliothek der grafischen Elemente in seinen Produkten verwenden würde?
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
zfs:
Und Knöpfe sind in Wirklichkeit gar keine Knöpfe).
Ein Knopf ist alles, was man drücken kann. ))
 
C-4:
Und ich frage mich, ob es einen professionellen Entwickler gibt, der die Standardbibliothek für grafische Elemente in seinen Produkten verwendet?
Ich glaube, es gibt auf dem Markt Produkte mit Schnittstellen, deren Elemente denen der Standardbibliothek ähneln.
 

Ich frage mich, ob Sie diesen Artikel gelesen haben, als Sie das Material vorbereitet haben?