Diskussion zum Artikel "Graphische Interfaces XI: Überarbeitung des Bibliothekscodes (build 14.1)"

 

Neuer Artikel Graphische Interfaces XI: Überarbeitung des Bibliothekscodes (build 14.1) :

Wenn die Bibliothek wächst, muss ihr Programmcode wiederholt optimiert werden, um die Größe zu verringern. Die Version der in diesem Artikel beschriebenen Bibliothek ist nun auch in Teilen objektorientiert. Dadurch ist der Code leichter zu verstehen. Mit der detaillierten Beschreibung der letzten Änderungen kann der Leser auf Basis dieser Bibliothek seine eigenen Ziele umsetzen.

Eine MQL-Anwendung wurde zum Zwecke des Testens mitgegeben. Dessen grafisches Interface verfügt über alle Steuerelemente der Bibliothek, damit Sie sehen können wie alles funktioniert. Und so sieht das Ganze aus: 

Fig. 12. Grafisches Interface zum Testen in einer MQL-Anwendung.

Fig. 12. Grafisches Interface zum Testen in einer MQL-Anwendung.

Autor: Anatoli Kazharski

 

Danke Anatoly!
Ich habe mich auf dieses Update gefreut.
Unglaubliche Arbeit!
Vielen Dank an Sie und MetaQuotes Software Corp.


 

Ich habe gehört, dass sich die Benutzeroberfläche der Bibliothek geändert hat?

 

Ausgezeichnete Arbeit!

Ich habe schon sehr lange auf ein Update wie dieses gewartet.

Jemand muss es so schnell wie möglich übersetzen!

 
Konstantin:

Ich nehme an, die Benutzeroberfläche der Bibliothek hat sich geändert?

Es wird einen weiteren Artikel zu diesem Update (14.2) geben. Warten Sie auf dessen Veröffentlichung. Alle Änderungen und Ergänzungen werden detailliert beschrieben.
 
Anatoli Kazharski:
Es wird einen weiteren Artikel zu diesem Update (14.2) geben. Warten Sie darauf, dass er veröffentlicht wird. Alle Änderungen und Ergänzungen werden detailliert beschrieben.

Ich warte sehr darauf :) Die Änderungen sind gewaltig, aber leider nicht alle für die bessere....

Gut, oder bisher schlecht gelöst. Abwarten, lesen, verstehen :)

 
Oleksii Chepurnyi:

...

Die Veränderungen sind gewaltig, aber leider nicht alle zum Besseren.....

Was zum Beispiel?
 
Anatoli Kazharski:
Und was?

In der Reihenfolge ihrer Bedeutung :)

1. spinEdit, das jetzt CTextEdit ist. Früher klickten wir in das Eingabefeld, wählten Text aus, gaben einen neuen Wert ein, Enter Enter. Jetzt klicken wir, setzen nur den Cursor, die Maus ist nicht in irgendeiner Weise hervorgehoben, und reagiert nicht auf die numerische Tastatur. Nun, String statt Double, ich weiß nicht einmal, ob das gut oder schlecht ist.... Lass es uns noch einmal machen - mal sehen :)

2. ComboBox. Ich verwende eine kleine Dropdown-Liste, ich brauche keine Bildlaufleiste. Ich habe es nur geschafft, sie zu entfernen, indem ich die Höhe der Liste erhöht habe, irgendwo auf der Höhe eines Elements in der Liste.

3. Das Neuzeichnen bei der Neuinitialisierung hat stark zugenommen. Ein kleines Fenster (~25 Einträge) verschwindet für ~200ms, wenn man die TF ändert. Früher war das fast nicht wahrnehmbar.

PS Intuitiv würde ich das Fenster gerne mit einem Doppelklick minimieren/entfernen :) Vielleicht ist es in der Bibliothek implementiert, ich habe es nur nicht gefunden?

 
Oleksii Chepurnyi:

...

1. spinEdit, das jetzt CTextEdit ist. Zuvor klickten wir in das Eingabefeld, wählten den Text aus, gaben einen neuen Wert ein, Enter Enter. Jetzt klicken wir, der Cursor ist nur platziert, es ist nicht mit der Maus ausgewählt, und reagiert nicht auf die numerische Tastatur. Nun, String statt Double, ich weiß nicht einmal, ob das gut oder schlecht ist.... Machen wir es noch einmal - mal sehen :)

2. ComboBox. Ich verwende eine kleine Dropdown-Liste, ich brauche keine Bildlaufleiste. Ich habe es nur geschafft, sie zu entfernen, indem ich die Höhe der Liste erhöht habe, irgendwo auf der Höhe eines Elements in der Liste.

3. Das Neuzeichnen bei der Neuinitialisierung hat stark zugenommen. Ein kleines Fenster (~25 Einträge) verschwindet für ~200ms, wenn man die TF ändert. Früher war das fast nicht wahrnehmbar.

...

Ok, ich werde es mir mal ansehen.

Oleksii Chepurnyi:

...

PS: Intuitiv möchte ich das Fenster mit einem Doppelklick minimieren/ausblenden :) Vielleicht ist es in der Bibliothek implementiert, ich habe es nur nicht gefunden?


Noch nicht.

 

Codekomprimierung, Universalisierung von Klassen und ein qualitativer Fortschritt in der Technologie. Endlich sehe ich es. Das ist gut.


Zum jetzigen Zeitpunkt haben, wie ich dem Artikel entnommen habe, fast alle grundlegenden Elementobjekte den Bitmap-Typ erworben, und nur die Bestandteile der Elemente werden gezeichnet, d. h. Bilder, Texte und Rechtecke.


Das erste technische Hindernis bei der Umstellung auf vollständige Zeichnung ist, dass OnChartEvent() das Ereignis des Klickens auf ein vollständig gezeichnetes Objekt nicht erfasst.

Das zweite ist, dass man die Eigenschaft Zorder für ein gezeichnetes Objekt nicht einstellen kann (ich denke, Sie haben hier eine Lösung gefunden).


Dann gibt es noch viele weitere Schwierigkeiten...


Frage: Warum müssen Sie diese Schwierigkeiten überwinden, wenn Sie doch, dem Ergebnis nach zu urteilen, bereits eine ausgezeichnete GUI haben? Was ist der praktische Sinn weiterer Transformationen?

 
Реter Konow:

Codekomprimierung, Universalisierung von Klassen und ein qualitativer Fortschritt in der Technologie. Endlich sehe ich es. Das ist gut.


Zum jetzigen Zeitpunkt haben, wie ich dem Artikel entnommen habe, fast alle grundlegenden Elementobjekte den Bitmap-Typ erworben, und nur die Bestandteile der Elemente werden gezeichnet, d. h. Bilder, Texte und Rechtecke.


Das erste technische Hindernis bei der Umstellung auf vollständige Zeichnung ist, dass OnChartEvent() das Ereignis des Klickens auf ein vollständig gezeichnetes Objekt nicht erfasst.

Das zweite ist, dass man die Eigenschaft Zorder für ein gezeichnetes Objekt nicht einstellen kann (ich denke, Sie haben hier eine Lösung gefunden).


Dann gibt es noch viele weitere Schwierigkeiten...


Frage: Warum müssen Sie diese Schwierigkeiten überwinden, wenn Sie doch, dem Ergebnis nach zu urteilen, bereits eine ausgezeichnete GUI haben? Was ist der praktische Sinn weiterer Transformationen?

Peter, diese "Probleme" können in 1 Tag gelöst werden. Ich habe es einmal geschafft, indem ich von einer Schnittstelle, die auf grafischen Objekten aufbaute, zu einer Schnittstelle wechselte, die vollständig auf einer Bitmap gezeichnet war.