Ein Crowdsourced-Projekt auf Canvas durchführen - Seite 35

 

Übrigens, die Menschen haben schon vor langer Zeit Dinge getan:

Dies ist ein zufälliger Screenshot von yandex, die GUI-Client-Server-Schnittstelle, und über das Netzwerk genommen. Wir müssen das Rad nicht neu erfinden...

(eine Sekunde Werbung) Pi ist wirklich cool. Dort wohnt das ehrliche Wolfram :-)

 
Алексей Барбашин:

Ja, das ist das Hauptproblem! Der gleiche Markt verbietet die Verwendung von DLLs, also müssen wir das Rad neu erfinden. Ok, wenn jemand denkt, dass GUI nicht benötigt wird, aber komplexe lange Berechnungen in jedem Fall in einem Thread werden nicht funktionieren, alles wird hängen! Also muss es in einer Delle geschehen... was auf dem Marktplatz verboten ist...

Und so weiter. Aus diesem Grund muss ich alles mit mql-Methoden zeichnen und lösen.

In der Tat ist die Trennung von GUI und Logik in Threads natürlich bereits möglich. Hier wurde das Thema Parallelität bereits diskutiert https://www.mql5.com/ru/forum/288985/page5#comment_14722396.

Als Ergebnis könnte das Formular selbst im Haupt-Thread belassen werden, wie es in winnda gemacht wird, während alle zusätzlichen Berechnungen in die "Hintergrund"-Ausführung verschoben werden könnten. So funktioniert es bei Windows, Linux und Android.

Ja, ich habe diesen Artikel gesehen, der eine Art weitere Krücke mit einer Menge Code ist, die ich mir nicht einmal ansehen möchte.
Wenn alles viel schneller und einfacher in dll zu erledigen ist.
Übrigens und mql Socket undWebRequest habe ich aufgegeben, weil, wenn mql Server nicht verfügbar ist, aufgrund der Unterbrechung der Verbindung,
Die Socket- oder Webrequest-Funktionen sind blockiert, also denken Sie daran, wenn Sie sich entscheiden, Anwendungen auf mql-Sockets und Webrequests aufzubauen.

 
Maxim Kuznetsov:

Übrigens, solange die Menschen Dinge tun, die schon einmal getan wurden:

Dies ist ein zufälliger Screenshot von yandex, GUI-Client-Server-Schnittstelle genommen, und über das Netzwerk. Wir müssen das Rad nicht neu erfinden...

(eine Sekunde Werbung) Pi ist wirklich cool. Dort wohnt das ehrliche Wolfram :-)

und Scratch im Screenshot ist übrigens in etwa das, was Konov machen will: einen Algorithmus aus Würfeln zusammenstellen.

 
Maxim Kuznetsov:

das liegt daran, dass Microsoft das Sagen hat :-)

Was glauben Sie, warum Menschen ihre Anmeldedaten verlieren, wenn sie Produkte auf einem Raubkopiersystem aktualisieren und aktivieren?

Was hatMicrosoft mit DLL-Signierschlüsseln zu tun? Damit wird nur der Entwickler identifiziert.
Die Schlüssel zum Signieren der DLL können von MQ an diejenigen vergeben werden, die vom Marktplatz vollständig authentifiziert wurden.
Mit diesem Schlüssel signiert der Entwickler seine DLL, um zu erkennen, wer die DLL geschrieben hat.
Der dll-Signaturschlüssel hat keinen Einfluss auf die Produktaktivierung.

 
Maxim Kuznetsov:

///

Können Sie verstehen, dass es keine richtige GUI auf dem MKL gibt? Der, den Sie haben, ist von '95. Schande über dich... Und Sie mit den Forderungen nach einer GUI von Drittanbietern, haben Sie darüber nachgedacht, wie man sie in MT verwenden kann? Wie wird sie angeschlossen? Oder lass dir von mir eine Plattitüde erzählen?))

 
Реter Konow:

Können Sie verstehen, dass es keine richtige GUI auf dem MKL gibt? Der, den Sie haben, ist von '95. Schande über dich... Und Sie mit den Forderungen nach einer GUI von Drittanbietern, haben Sie darüber nachgedacht, wie man sie in MT verwenden kann? Wie wird sie angeschlossen? Oder ich gebe dir keinen Schatz, ich sage dir eine Plattitüde?))

Peter, ich werde dir wahrscheinlich die Augen öffnen und für Maxim sprechen: Maxim kennt das Thema besser als jeder andere, und vor etwa anderthalb Jahren hat er seine Version der GUI veröffentlicht, die er sozusagen auf der Basis von Markup entwickelt hat. Darüber hinaus wurde die grafische Benutzeroberfläche in einer externen Umgebung erstellt, die jedoch vollständig mit dem Programm interagiert (Indikator, Expert Advisor).

Maxim, entschuldigen Sie, dass ich Ihre Frage beantwortet habe.

Ich möchte jedoch auf das Thema zurückkommen. Ich habe ein Bild aus einem Artikel über die Funktionsweise der Standardbibliothek entnommen:


Dieser Screenshot zeigt den Aufbau des Dialogs in vereinfachter Form.

In dieser Version ist der Rahmen das Hauptelement, mit dem das Canvas-Objekt auf dem Diagramm erstellt wird und auf dem alle untergeordneten Objekte gezeichnet werden. Oder besser gesagt, sie wird in Abhängigkeit von dem untergeordneten Objekt gezeichnet.

Die Schaltfläche Schließen wird auf die Beschriftung gezeichnet und die Beschriftung wird auf den Rahmen gezeichnet, der dann mit allen gezeichneten Elementen auf die Leinwand gezeichnet wird.

 
Алексей Барбашин:

Peter, ich werde dir wahrscheinlich die Augen öffnen und dir für Maxim sagen: Maxim ist mit diesem Thema vertrauter als jeder andere und hat vor etwa anderthalb Jahren seine Version der GUI veröffentlicht, die auf der Basis von Markup entstanden ist. Darüber hinaus wurde die grafische Benutzeroberfläche in einer externen Umgebung erstellt, die jedoch vollständig mit dem Programm interagiert (Indikator, Expert Advisor).

Maxim, entschuldigen Sie, dass ich Ihre Frage beantwortet habe.

Ich möchte jedoch auf das Thema zurückkommen. Ich habe ein Bild aus einem Artikel über die Funktionsweise der Standardbibliothek entnommen:


Dieser Screenshot zeigt den Aufbau des Dialogs in vereinfachter Form.

In dieser Version ist der Rahmen das Hauptelement, mit dem das Canvas-Objekt auf dem Diagramm erstellt wird und auf dem alle untergeordneten Objekte gezeichnet werden. Oder besser gesagt, sie wird in Abhängigkeit von dem untergeordneten Objekt gezeichnet.

Die Schaltfläche Schließen wird auf die Beschriftung und die Beschriftung auf den Rahmen gezeichnet und diese Schaltfläche mit allen gezeichneten Elementen wird auf die Leinwand gezeichnet.

Ich weiß nicht, was er gepostet hat und was er in der GUI gemacht hat, aber in meinen Threads hat er keinen einzigen technischen Vorschlag, keine Lösung oder Diskussion zu diesem Thema gemacht. Nur leeres Getrolle, das auf Lösungen von Dritten hinweist und dazu auffordert, das Rad nicht neu zu erfinden.

Zurück zum eigentlichen Thema.

Soweit ich mit der Standardbibliothek vertraut bin (eigentlich sehr wenig), bestehen Elemente und Fenster aus MT-Objekten. Das heißt, in unserem Kontext werden sie nicht auf die Leinwand gezeichnet. Natürlich werden sie gezeichnet, aber nicht auf unserer Leinwand, was uns daran hindert, Pixelfarben zu steuern, Oberflächenverläufe zu erstellen und vieles mehr.

Theoretisch könnten wir die Struktur der Bibliothek kopieren und ein Analogon auf dem Kanvas erstellen. Theoretisch...

Das Problem ist, dass CCanvas selbst nicht geeignet ist, um eine GUI darauf zu erstellen. Warum? Denn das Kanvas-System wird hauptsächlich für grafische Primitive verwendet. Diese Klasse bietet also im Grunde nichts anderes als Primitive. Der GUI-Archetyp muss von Ihnen selbst erstellt werden. Und in diesem Fall ist die Klasse nicht notwendig. Es ist bequemer, sich mit eigenen Lösungen zu begnügen. Schließlich kann man eine rechteckige Markierung auch ohne die Klasse zeichnen. Genauso wie Sie eine Leinwand erstellen oder laden können. Es ist ganz einfach. Deshalb habe ich meine eigene Lösung bevorzugt.

Aber man kann nicht auf CCanvas verzichten. Deshalb bestehe ich auch nicht darauf.

 
Реter Konow:

Ich weiß nicht, was er gepostet hat und was er in Sachen GUI getan hat, aber in meinen Threads hat er keine technischen Vorschläge, keine Lösungen und keine Diskussionen zu diesem Thema gemacht. Nur leeres Getrolle, das auf Lösungen von Dritten hinweist und dazu auffordert, das Rad nicht neu zu erfinden.

Zurück zum eigentlichen Thema.

Soweit ich mit der Standardbibliothek vertraut bin (eigentlich sehr wenig), bestehen Elemente und Fenster aus MT-Objekten. Das heißt, in unserem Kontext werden sie nicht auf die Leinwand gezeichnet. Natürlich werden sie gezeichnet, aber nicht auf unserer Leinwand, was uns daran hindert, die Pixelfarben zu steuern, Oberflächenverläufe zu erstellen und mehr.

Theoretisch könnten wir die Struktur der Bibliothek kopieren und ein Analogon auf dem Kanvas erstellen. Theoretisch...

Das Problem ist, dass CCanvas selbst nicht geeignet ist, um eine GUI darauf zu erstellen. Und warum? Denn das Kanvas-System wird hauptsächlich für grafische Primitive verwendet. Diese Klasse bietet also im Grunde nichts anderes als Primitive. Der GUI-Archetyp muss von Ihnen selbst erstellt werden. Und in diesem Fall ist die Klasse nicht notwendig. Es ist bequemer, sich mit eigenen Lösungen zu begnügen. Schließlich können Sie eine rechteckige Markierung auch ohne die Klasse zeichnen. Genauso wie Sie eine Leinwand erstellen oder laden können. Es ist ganz einfach. Deshalb habe ich meine eigene Lösung bevorzugt.

Aber man kann nicht auf CCanvas verzichten. Deshalb bestehe ich nicht darauf.

Stopp! Peter (richtig?), lass uns ein paar Vereinbarungen treffen, um uns gegenseitig zu verstehen. Bedingung 1: Wir werden eine Leinwand nicht als CCanvas-Klasse bezeichnen, sondern nur eine Leinwand, um einen Teil des Bildschirms oder eine bestimmte Ressource zu zeichnen. Die Klasse CCanvas hat mit all dem nichts zu tun und wir werden uns auch nicht weiter damit beschäftigen. Es bietet einfach Funktionen zum Zeichnen auf der Leinwand und das war's! In der Tat können wir mit vielen verschiedenen Methoden zeichnen.

Unter "Zeichnen" verstehen wir die Bildung eines Arrays von Pixeln, auf dessen Grundlage eine Ressource erstellt wird, die dann auf dem Diagramm platziert wird.

 
Алексей Барбашин:

Stopp! Peter (richtig?), lassen Sie uns einige Konventionen zum gegenseitigen Verständnis akzeptieren. Bedingung 1: Wir werden CCanvas nicht als Klasse bezeichnen, sondern nur als eine Leinwand zum Zeichnen eines Teils des Bildschirms oder speziell einer Ressource. Die Klasse CCanvas hat mit all dem nichts zu tun und wir werden uns auch nicht weiter damit beschäftigen. Es bietet einfach Funktionen zum Zeichnen auf der Leinwand und das war's! In der Tat können wir mit vielen verschiedenen Methoden zeichnen.

Unter "Zeichnen" versteht man die Bildung eines Pixelarrays, auf dessen Grundlage eine Ressource erstellt und dann auf dem Diagramm platziert wird.

Das ist richtig.

 
Алексей Барбашин:

Peter, ich werde dir wahrscheinlich die Augen öffnen und dir für Maxim sagen: Maxim ist mit diesem Thema vertrauter als jeder andere und hat vor etwa anderthalb Jahren seine Version der GUI veröffentlicht, die auf der Basis von Markup entstanden ist. Darüber hinaus wurde die grafische Benutzeroberfläche in einer externen Umgebung erstellt, die jedoch vollständig mit dem Programm interagiert (Indikator, Expert Advisor).

Maxim, entschuldigen Sie, dass ich Ihre Frage beantwortet habe.

Ich möchte jedoch auf das Thema zurückkommen. Ich habe ein Bild aus einem Artikel über die Funktionsweise der Standardbibliothek entnommen:


Dieser Screenshot zeigt den Aufbau des Dialogs in vereinfachter Form.

In dieser Version ist der Rahmen das Hauptelement, mit dem das Canvas-Objekt auf dem Diagramm erstellt wird und auf dem alle untergeordneten Objekte gezeichnet werden. Oder besser gesagt, sie wird in Abhängigkeit von dem untergeordneten Objekt gezeichnet.

Die Schaltfläche "Schließen" wird auf "Beschriftung" und "Beschriftung" wird auf "Rahmen" gezeichnet, und alle Elemente werden auf der Leinwand gezeichnet.

Nicht ganz richtig :-)

Ich habe eine Schnittstelle zu einer Tcl-DLL (die Tool Common Language ist), die eine Tk-Grafik, die als GUI in Python/Ruby/etc freigegeben ist, hat

das Ziel war nicht, eine GUI zu bekommen, sondern ein nettes Nebenprodukt :-)

tcl.Eval("button .pressme -text {Hello Peter}; pack .pressme") ;

meiner Meinung nach praktisch und vor allem kurz :-)

Ich will niemanden aufhetzen - ich kenne tcl/tk, ich benutze es, ich teile meine Erfahrungen (siehe sourceforge atcl).

Grund der Beschwerde: