Mein Ansatz. Der Kern ist der Motor. - Seite 28

 
Dmitry Fedoseev:

Die Bibliothek von Anatoly ist übrigens auch ein Witz. Wie viele Artikel zu diesem Thema? Etwa 50? Überall heißt es in den Kommentaren: "Oh, noch nicht, das muss ich noch verbessern". Was, um seine Bibliothek zu nutzen, müssen Sie diese 50 Artikel lesen? Was ist das Wesentliche und die Bedeutung?

Ich habe versucht, die erwähnte Bibliothek zu verbinden, meine Meinung ist zweideutig, ja es ist bequem, ja es ist schön, aber ich war nicht in MQL beschäftigt, wenn die Bibliothek erstellt wurde, und mit späteren Builds von MT, wurde die Bibliothek "bedingt funktionsfähig", einige Beispiele aus den Artikeln nicht kompilieren oder arbeiten mit Bugs, und die Tonnen von Code zu verstehen, ach, es ist einfacher, die Standard-Lieferung von MT verwenden

Maxim Kuznetsov:

Moderne GUI-Konstruktoren (die, die "Schaltflächen auf Formulare verteilen") sind ein ziemlich technologisches Ding und das Anhängen von MQL-Elementen an sie sieht nicht gerade fantastisch aus.

Fast alle von ihnen haben in der Zwischenform (Projektdatei usw.) ein XML, das die Position und die Beziehungen zwischen den Elementen beschreibt.

Die Generierung von Code für die Zielplattform ist eigentlich eine XSLT-Transformation, die von jedem durchgeführt werden kann, der sich für einen Webentwickler hält :-)

Nehmen Sie zum Beispiel EasyAndFast (https://www.mql5.com/ru/code/19703), denn es ist objektbasiert und hat alle notwendigen Komponenten. (und ist, anders als in diesem Thread, offen und dokumentiert ),
und schreiben Sie einfach einen Übersetzer.

Es gibt keinen gui-mql builder, nicht weil er mega kompliziert ist, sondern weil er einfach nicht beliebt ist.


Ja, ich bin auf der Suche danach - ich bin interessiert, zumindest um es Peter unter die Nase zu reiben! ))))

Ich habe keine Zeit oder Lust, mich mit allen Details zu beschäftigen - warum nicht einfach Crossplatform GUI builder verwenden?

 
Igor Makanu:

Ich habe versucht, die oben genannte Bibliothek zu verbinden, ist meine Meinung zweideutig, ja es ist bequem, ja es ist schön, aber ich war nicht in MQL beteiligt, wenn diese Bibliothek erstellt wurde, und mit späteren Builds von MT, wurde die Bibliothek "bedingt funktionsfähig", einige Beispiele aus den Artikeln nicht kompilieren oder arbeiten mit Bugs, und Tonnen von Code zu verstehen, ach, es ist einfacher, die Standard-MT-Paket verwenden


Ja, ich bin auf der Suche danach - zumindest um es Peter unter die Nase zu reiben! ))))

Ich habe weder Zeit noch Lust, mich mit all dem zu befassen!

Werfen Sie einen Blick auf QT Designer.

 
Dmitry Fedoseev:

Peter, wo steht, dass Ihre grafische Benutzeroberfläche nicht aus grafischen Objekten besteht, sondern auf einer Leinwand gezeichnet wird? Seien wir nicht hinterhältig, es sieht schrecklich aus.

...

Als Künstlerin kam ich an diesen Worten nicht vorbei.


Sicher, alles andere als IDEAL, aber "furchtbar"???

 
Igor Makanu:

Ja, ich bin auf der Suche nach einem - ich möchte es zumindest Peter unter die Nase reiben! ))))

Aber im Ernst, ich möchte versuchen, einige plattformübergreifende GUI-Builder, vielleicht etwas zu zeigen, dass ich schauen kann?

Abwischen nicht nötig)). Und man braucht nicht zu suchen.

DLL nach Cis. Die VS-Umgebung verfügt bereits über einen Konstruktor. Die Sprache ist MQL sehr ähnlich. Wenn auch nicht für Market, so doch für Sie selbst, die einfachste und naheliegendste Option mit modernem Look and Feel.

Und was Peter anbietet, ist die DOS-ähnliche GUI aus der Turbo Vision-Serie von Borland aus den frühen 90er Jahren.

 
Yuriy Asaulenko:

Und was Peter anbietet, ist eine DOS-ähnliche GUI aus der Turbo Vision-Serie von Borland aus den frühen 90er Jahren.

Es ist eine ziemlich gute GUI. Vielleicht bin ich zu alt, aber ich finde es ziemlich gut.

Die Frage ist, wer daran interessiert sein könnte, sie zu nutzen. Wie viele von ihnen gibt es?

 

Die Erstellung einer eigenen grafischen Benutzeroberfläche ist nicht das Problem.

Das Problem besteht darin, eine sinnvolle Verwendung dafür zu finden, die von MEHR Nutzern benötigt wird. Das ist es, was bisher allen Schwierigkeiten bereitet hat. Wenn es eine normale Aufgabe gibt, gibt es eine grafische Benutzeroberfläche, und mehr als eine...

Petr, wie lautet die Antwort auf die Frage, WARUM die Nutzer Ihr Produkt brauchen? Ich verstehe, dass Sie von diesem Prozess fasziniert sind, ich habe ihn auch durchgemacht. Aber warum brauchen die Nutzer sie? Wer ist das Zielpublikum?
 
Georgiy Merts:

Es ist eine ziemlich gute GUI. Vielleicht bin ich zu alt, aber ich finde es ganz gut.

Die Frage ist, wer wäre daran interessiert, es zu nutzen? Wie viele von ihnen sind hier?

Gut oder schlecht - das hängt von den jeweiligen Aufgaben ab. Vor einigen Jahren habe ich ein GUI-Terminal auf Excel-Tabellen erstellt - mit Schaltflächen, Feldern, Tabellen, Echtzeitdiagrammen und anderen Attributen. Ich brauchte es speziell für den manuellen Handel. Es gab keine Probleme mit dem Aufbau und der Schnittstelle.

Peter's GUI wird als Lösung des Problems und als Vereinfachung der Konstruktion vorgestellt. Er hat es erdacht und gemacht, und gut gemacht, natürlich, aber es gibt hier schon lange kein Problem mehr, und es gibt nicht viel zu vereinfachen.

 

111

Mm-hmm - schön. Außerdem gibt es eine (stilistische) Unstimmigkeit mit einigen der anderen Screenshots, die höchst fragwürdig ist.

 
Реter Konow:

Hier ist ein Beispiel für meine Verbindungsschnittstelle:

Das ist hier schon alles geklärt.

Ich habe es mir angesehen. Das ist eine Sauerei. Die Datei wird fast vollständig von der Funktion On_Gui_Event eingenommen, die 600 Zeilen lang ist. Hier ist ein Fragment davon (Rechtschreibung und Zeichensetzung sind erhalten):

void On_Gui_Event(int Element, string value)
{
 string action = value, selected_option = value; //DON'T CHANGE THIS LINE
//------------------------------------
 switch(Element)
   {
//=====================================================================================================================
//WINDOW:   Checkboxes | element: CHECKBOX  | name: Checkbox_1  |  Location: Window's Main Frame
//=====================================================================================================================
case CHECKBOX3___Checkbox_1:
               //------------------------------------------------------------------------------------------------------
               //What to do when checkbox checked or unchecked?
               //------------------------------------------------------------------------------------------------------
               switch((int)action)
               {
                case checked:     break;
  
                case unchecked:     break;
               }
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
  
//=====================================================================================================================
//WINDOW:   Checkboxes | element: CHECKBOX  | name: Checkbox_2  |  Location: Window's Main Frame
//=====================================================================================================================
case CHECKBOX4___Checkbox_2:
               //------------------------------------------------------------------------------------------------------
               //What to do when checkbox checked or unchecked?
               //------------------------------------------------------------------------------------------------------
               switch((int)action)
               {
                case checked:     break;
  
                case unchecked:     break;
               }
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
  ...
//=====================================================================================================================
//WINDOW:   Spin edits | element: D_LIST  | name: D_LIST_2  |  Location: Window's Main Frame
//=====================================================================================================================
case D_LIST20___D_LIST_2:
               //------------------------------------------------------------------------------------------------------
               //What to do when option selected?
               //------------------------------------------------------------------------------------------------------
               if(selected_option == "L_ITEM  1"){}
               if(selected_option == "L_ITEM  2"){}
               if(selected_option == "L_ITEM  3"){}
               if(selected_option == "L_ITEM  4"){}
               if(selected_option == "L_ITEM  5"){}
               if(selected_option == "L_ITEM  6"){}
               if(selected_option == "L_ITEM  7"){}
               if(selected_option == "L_ITEM  8"){}
               if(selected_option == "L_ITEM  9"){}
               if(selected_option == "L_ITEM  10"){}
               if(selected_option == "L_ITEM  11"){}
               if(selected_option == "L_ITEM  12"){}
               if(selected_option == "L_ITEM  13"){}
               if(selected_option == "L_ITEM  14"){}
               if(selected_option == "L_ITEM  16"){}
               if(selected_option == "L_ITEM  17"){}
               if(selected_option == "L_ITEM  18"){}
               if(selected_option == "L_ITEM  19"){}
               if(selected_option == "L_ITEM  20"){}
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
  ...
  }
}

Das ist einfach Unsinn. Der Code lässt sich natürlich nicht kompilieren. Keine der Fallkonstanten ist in der Datei definiert. Der Schalter befindet sich im Inneren des Gehäuses. Die Einzüge sind so gestaltet, als wollten sie einen armen Benutzer verwirren. Es gibt einen Haufen ineffizienter Codes wie if(selected_option == "L_ITEM 1"){} Kurz gesagt, es ist eine einzige Katastrophe.

 
Vasiliy Sokolov:

Ich habe es mir angesehen. Das ist eine Sauerei. Die Datei wird fast vollständig von der Funktion On_Gui_Event eingenommen, die 600 Zeilen lang ist. Hier ist ein Fragment davon (Rechtschreibung und Zeichensetzung sind erhalten):

Das ist einfach Unsinn. Der Code lässt sich natürlich nicht kompilieren. Keine der Fallkonstanten ist in der Datei definiert. Der Schalter befindet sich im Inneren des Gehäuses. Die Einzüge sind so gestaltet, als wollten sie einen armen Benutzer verwirren. Eine Menge ineffizienter Code wie if(selected_option == "L_ITEM 1"){} Kurz gesagt, es ist düster und unheilvoll.

Vasily, du hast mich sehr zum Lachen gebracht. )) Warum sollten Sie versuchen, alles zu kompilieren, was Sie in die Finger bekommen?)

Dies ist ein Beispiel für eine GUI-Verbindungsdatei. Fragen Sie Oleg Papkov, wie das funktioniert. Welche Art von "ineffizientem Code"? Normaler Code, der so klar wie möglich sein soll.

Grund der Beschwerde: