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

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

...

Peter, Sie haben eine großartige Arbeit geleistet und eine GUI-Bibliothek in Ihrem Stil erstellt. Wenn Sie aber eine Veröffentlichung planen, lohnt es sich trotzdem, sie auf eine andere Technologie umzustellen. Ich bin bereit, Ihnen dabei zu helfen und Schritt für Schritt die ganze Kraft Ihrer Bibliothek auf eine neue Weise zu übertragen.

Alexej, sagen wir mal, ich wäre bereit, es zu versuchen. Wie sollte man vorgehen? Die Arbeit ist unglaublich.
 
Реter Konow:
Alexey, sagen wir, ich würde es gerne versuchen. Wie wollen Sie vorgehen? Es ist eine unmögliche Aufgabe.

Peter, ich kann mir wahrscheinlich nicht einmal einen Bruchteil der Arbeit vorstellen, die Sie geleistet haben, und ich bin mir mehr als sicher, dass ich das ganze Ausmaß der geschaffenen Objekte einfach unterbewerte. ABER!

Wie immer gibt es ein ABER!

Jedes Projekt, nicht einmal unbedingt in der Programmierung.

Zunächst einmal abstrahieren wir von den erstellten Objekten. Das heißt, wir werden sie nicht als Matrix, Strukturen oder Klassen darstellen. Wir akzeptieren einfach den Begriff des OBJEKTS (auch Steuerelement, Formular, Schnittstelle usw. genannt). Sie versuchen, die Interaktion von Objekten strukturell zu gestalten. Wenn wir gemeinsam herausfinden, was gebaut wird, werden wir versuchen, auf dieser Grundlage die Regelmäßigkeiten aufzudecken. Im Prinzip müssen Sie sie nicht identifizieren, weil Sie sie schon vor langer Zeit identifiziert und eine einheitliche Behandlung für sie geschaffen haben, Sie werden einfach das Funktionsprinzip und den Zweck erklären. Dann werden wir einfach ein Objekt durch ein anderes in Ihrem Projekt ersetzen. Natürlich wird es viel schwieriger sein, als von Grund auf zu schreiben. Aber in unserem Fall haben wir ein etwas anderes Ziel, so dass im Großen und Ganzen keine Eile geboten ist. Aber Veröffentlichungen zur Übersetzung des Matrix-Algorithmus in den Objekt-Algorithmus wären wahrscheinlich nicht nur für Anfänger interessant. Ich bin überzeugt, dass sich im Laufe dieser Arbeit andere Teilnehmer zu uns gesellen und ihre Ideen einbringen oder eine bequemere Umsetzung dieses oder jenes Algorithmus anregen werden.

Auf die eine oder andere Weise muss die Idee selbst zunächst durch ein Flussdiagramm des Algorithmus dargestellt werden.

Ich habe meinen Vorschlag gemacht. Sie können aber auch anders vorgehen, das hängt ganz von Ihrem Wunsch und Ihrer Sichtweise der Dinge ab (gemeinsame Arbeit).

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

Peter, ich kann mir wahrscheinlich nicht einmal einen Bruchteil der Arbeit vorstellen, die Sie geleistet haben, und ich bin mir mehr als sicher, dass ich das ganze Ausmaß der geschaffenen Objekte einfach unterbewerte. ABER!

Wie immer gibt es ein ABER!

Jedes Projekt, nicht einmal unbedingt in der Programmierung.

Zunächst einmal abstrahieren wir von den erstellten Objekten. Das heißt, wir werden sie nicht als Matrix, Strukturen oder Klassen darstellen. Wir akzeptieren einfach den Begriff des OBJEKTS (auch als Steuerelement, als Formular, als Schnittstelle insgesamt usw. bezeichnet). Sie versuchen, die Interaktion von Objekten strukturell zu gestalten. Wenn wir gemeinsam herausfinden, was gebaut wird, werden wir versuchen, auf dieser Grundlage die Regelmäßigkeiten aufzudecken. Im Prinzip müssen Sie sie nicht identifizieren, weil Sie sie schon vor langer Zeit identifiziert und eine einheitliche Behandlung für sie vorgenommen haben, Sie werden einfach das Funktionsprinzip und den Zweck erklären. Dann werden wir einfach ein Objekt durch ein anderes in Ihrem Projekt ersetzen. Natürlich wird es viel schwieriger sein, als von Grund auf zu schreiben. Aber in unserem Fall haben wir ein etwas anderes Ziel, so dass im Großen und Ganzen keine Eile geboten ist. Aber Veröffentlichungen zur Übersetzung des Matrix-Algorithmus in den Objekt-Algorithmus wären wahrscheinlich nicht nur für Anfänger interessant. Ich bin überzeugt, dass sich im Laufe dieser Arbeit andere Teilnehmer zu uns gesellen und ihre Ideen einbringen oder eine bequemere Umsetzung dieses oder jenes Algorithmus anregen werden.

Auf die eine oder andere Weise muss die Idee selbst zunächst durch ein Flussdiagramm des Algorithmus dargestellt werden.

Ich habe meinen Vorschlag gemacht. Sie können aber auch anders vorgehen, es hängt alles von Ihrem Wunsch und Ihrer Sicht der Dinge ab (Zusammenarbeit).

Also gut. Ich werde tun, was ich kann. Ich werde die Lösungen und die Architektur erläutern. Aber ich weiß nicht, ob ich am Ende erfolgreich sein werde.

Nun werden die Objekte im Kernel angeordnet. Sie müssen aus dem Kernel herausgenommen und in Klassen untergebracht werden.

1. Ich würde wahrscheinlich drei Basisklassen erstellen: "Rectangle_label", die alle grundlegenden Eigenschaften von Rechteck-Etiketten enthalten würde, "Icon" und "Text". Diese Objekte sind Bestandteil fast aller Kontrollen.

2. Als nächstes erstellen Sie eine Gruppe von Nachfolgeklassen. Sie werden nach folgenden Kriterien unterteilt: a) Elemente, die einen Parameter steuern. b) Elemente, die durch den Parameter gesteuert werden.

3. Die Klassen würden die spezifischen Eigenschaften der einzelnen Elemente beschreiben.

Dies sind nur die ersten Ideen. Sie könnten falsch liegen.

Bei diesem Schema erweist sich die Vererbung sofort als mehrfach - Elementklassen (Erben) müssen Eigenschaften von drei Basisklassen auf einmal enthalten.

 
Реter Konow:

Also gut. Ich werde mein Bestes tun. Ich werde die Lösungen und die Architektur erläutern. Aber ich weiß nicht, ob ich am Ende erfolgreich sein werde.

Im Moment sind die Objekte im Kernel organisiert. Sie müssen aus dem Kernel herausgenommen und in Klassen untergebracht werden.

1. Ich würde wahrscheinlich drei Basisklassen erstellen: "Rectangle_label", die alle grundlegenden Eigenschaften von Rechteck-Etiketten enthalten würde, "Icon" und "Text". Diese Objekte sind Bestandteil fast aller Kontrollen.

2. Als nächstes erstellen Sie eine Gruppe von Nachfolgeklassen. Sie werden nach folgenden Kriterien unterteilt: a) Elemente, die einen Parameter steuern. b) Elemente, die durch den Parameter gesteuert werden.

3. Die Klassen würden die spezifischen Eigenschaften der einzelnen Elemente beschreiben.

Dies sind nur die ersten Ideen. Sie könnten falsch liegen.

Bei diesem Schema ist die Vererbung gleichzeitig plural - Elementklassen (Nachkommen) müssen Eigenschaften von drei Basisklassen auf einmal enthalten.

Hier also einige Überlegungen.

"Ich würde drei Basisklassen erstellen: "Rectangle_label", die alle grundlegenden Eigenschaften von rechteckigen Etiketten enthalten würde, "Icon" und "Text". - Klassischerweise wird das erste Objekt einfach Rectangle oder Rect genannt, das zweite verallgemeinert Image, nun, das dritte kann entweder durch separate Eigenschaften beschrieben werden oder auch ein separates Objekt bilden. Um anzuzeigen, dass es sich bei dem erstellten Datentyp um eine Klasse in C++ und in Mql handelt, ist es üblich, C vor dem Namen des Typs anzugeben, d. h. CRectangle, CImage, CText. Aber einfache Typen, die nur heterogene Daten enthalten, lassen sich besser als Strukturen erstellen.

Zunächst sind alle grundlegenden Eigenschaften von LARGE-Kontrollen zu berücksichtigen. Im weiteren Verlauf können Sie beliebige Eigenschaften hinzufügen, das wird kein Problem sein.

"a) Elemente, die einen Parameter steuern. b) Elemente, die von einem Parameter gesteuert werden." - Hier ist eine Entschlüsselung erforderlich. Ich verstehe nicht, was diese Beschreibungen bedeuten.

"ob es am Ende erfolgreich sein wird" - es ist immer noch besser, sicher zu sein, dass es erfolgreich sein wird. Andernfalls ist es besser, nicht zu beginnen.
 
Алексей Барбашин:

Nun, hier einige Überlegungen.

1. "Ich würde drei Basisklassen erstellen: "Rectangle_label", die alle grundlegenden Eigenschaften von rechteckigen Etiketten enthalten würde, "Icon" und "Text". - Klassischerweise wird das erste Objekt einfach Rectangle oder Rect genannt, das zweite verallgemeinert Image, na ja, das dritte kann entweder durch separate Eigenschaften beschrieben werden lobo auch ein weißes Objekt machen. Um einen erstellten Datentyp als Klasse in C++ und in Mql zu kennzeichnen, ist es üblich, C vor dem Typnamen anzugeben, z. B. CRectangle, CImage, CText

2. "a) Elemente, die den Parameter steuern. b) Elemente, die durch den Parameter gesteuert werden." - Hier ist eine Entschlüsselung erforderlich. Ich verstehe nicht, was diese Beschreibungen bedeuten.

"Wird es am Ende erfolgreich sein" - es ist noch besser, sicher zu sein, dass es erfolgreich sein wird. Andernfalls ist es besser, nicht zu beginnen.

1. Die grundlegendste Klasse ist GHObjest (grundlegendes grafisches Objekt). Es sollte x,y, x_size, y_sixe Eigenschaften und verschiedene Arten der Koordinatenbindung geben. Dies sind gemeinsame Eigenschaften ALLER Objekte.

2. seine Nachkommen sind CRec, CImage, CText. Sie haben nur spezifische und inhärente Eigenschaften.

3. Dann gibt es noch die Fensterplattformklassen. Es gibt mehrere davon: Menüfenster, Optionsfenster, Dialogfenster, dynamisches Fenster. Dort gibt es eine Reihe von spezifischen Eigenschaften.

3. Dann gibt es noch die Elementklassen. Es können bis zu 50 Stück sein. Sie werden in Kategorien eingeteilt: 1) nach der Methode der Parameterverarbeitung, 2) nach der Verzierungsmethode.

Dies ist eine gute Ausgangsbasis. Wir müssen eine Auszeichnungssprache entwickeln, keine Bibliothek. Was wäre sonst der Sinn?


ZS Die meisten Steuerelemente arbeiten mit den Parametern, die ihnen vorgegeben werden. Ihr Zweck besteht im Wesentlichen darin, einige Benutzerparameter zu kontrollieren. Aber jede Kontrolle erfolgt auf eine andere Weise.

ZSY: Ich habe vergessen, hinzuzufügen, dass Sie eine Basisklasse von Parametern mit ihren Eigenschaften benötigen. CParam zum Beispiel.

 
Реter Konow:

1. Die grundlegendste Klasse ist das GOBijest (grafisches Basisobjekt). Es sollte x,y, x_size, y_sixe Eigenschaften und verschiedene Arten der Koordinatenbindung geben. Dies sind gemeinsame Eigenschaften ALLER Objekte.

2. seine Nachkommen sind CRec, CImage, CText. Sie haben nur spezifische und inhärente Eigenschaften.

3. Dann gibt es noch die Fensterplattformklassen. Es gibt mehrere davon: Menüfenster, Optionsfenster, Dialogfenster, dynamisches Fenster. Dort gibt es eine Reihe von spezifischen Eigenschaften.

3. Dann gibt es noch die Elementklassen. Es können bis zu 50 Stück sein. Sie werden in Kategorien unterteilt: 1) nach der Methode der Parameterverarbeitung, 2) nach der Verzierungsmethode.

Dies ist eine gute Ausgangsbasis. Wir müssen eine Auszeichnungssprache entwickeln, keine Bibliothek. Was wäre sonst der Sinn?


ZS Die meisten Steuerelemente arbeiten mit den Parametern, die ihnen vorgegeben werden. Ihr Zweck besteht im Wesentlichen darin, einige Benutzerparameter zu kontrollieren. Aber jedes Element macht es anders.

Ich habe eine kleine Gehirnexplosion... )) Es muss alles gezeichnet werden, sonst kann man es nicht verdauen. )

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

Ich habe einen kleinen Hirnfurz... )) Es muss alles gezeichnet werden, sonst kann man es nicht verdauen. )

)) Nichts...

Die CParam-Parameter-Basisklasse hat mehrere Abkömmlinge. Der Punkt ist, dass es allgemeine Eigenschaften von Parametern für kontrollierte Güter gibt, und es gibt spezifische Eigenschaften. Ein Beispiel: Eine Schaltfläche hat einen kontrollierten Parameter vom Typ bool, während eine Auswahlliste den Typ "Menü" hat. Das heißt, eine Schaltfläche schaltet zwischen 1/0 um, während eine Liste eine begrenzte Auswahl bietet. Der Schieberegler zum Beispiel hat den Parametertyp "range", also Bereich. Es gibt verschiedene andere Arten, die alle einzigartige Eigenschaften haben.

Daher sollten auch die Klassen, die von der Basisparameterklasse abstammen, so sein. Etwas wie "CBool", "CRange", "CMenu".

 
Реter Konow:

)) Nichts...

Die CParam-Parameter-Basisklasse hat mehrere Abkömmlinge. Der Punkt ist, dass es allgemeine Eigenschaften für Parameter von kontrollierten Gegenständen gibt, und es gibt spezifische. Ein Beispiel: Eine Schaltfläche hat den kontrollierten Parametertyp bool, während eine Dropdown-Liste den Typ "Menü" hat. Das heißt, eine Schaltfläche schaltet zwischen 1/0 um, während eine Liste eine begrenzte Auswahl bietet. Der Schieberegler zum Beispiel hat den Parametertyp "range", also Bereich. Es gibt verschiedene andere Arten, die alle einzigartige Eigenschaften haben.

Daher sollten auch die Klassen, die von der Basisparameterklasse abstammen, so sein. Etwas wie "CBool", "CRange", "CMenu".

Warten Sie. Versuchen wir nun, das Ganze ein wenig abstrakt zu betrachten.

Peter, was haben Ihrer Meinung nach Steuerelemente wie Schaltfläche, Textbeschriftung, Eingabefeld und Bildfeld gemeinsam?

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
При создании графического объекта функцией ObjectCreate() необходимо указать тип создаваемого объекта, который может принимать одно из значений перечисления ENUM_OBJECT. Дальнейшие уточнения свойств созданного объекта возможно с помощью функций по работе с графическими объектами.
 
Алексей Барбашин:

Warten Sie. Versuchen wir nun, das Ganze ein wenig abstrakt zu betrachten.

Peter, was haben Ihrer Meinung nach Steuerelemente wie Schaltflächen, Textbeschriftungen, Eingabefelder und Bildfelder gemeinsam?

1. Koordinaten, Abmessungen.

2. Koordinatenabhängigkeiten, Abhängigkeiten von Dimensionen.

3. eine Reihe weiterer Dinge, abhängig von der Gesamtzahl der Eigenschaften in der Steuerungsfunktionalität. Ich habe 270 Immobilien in meinem Kern. Die meisten von ihnen sind üblich. Aber ich habe eine Funktionalität entwickelt, die eine Vielzahl von Funktionen unterstützt. Daher eine solche Anzahl von Eigenschaften. Wir müssen mit den einfachsten Eigenschaften beginnen.

 
Реter Konow:

1. Koordinaten.

2. Koordinieren Sie Abhängigkeiten.

3. eine Reihe anderer Dinge, abhängig von der Gesamtzahl der Eigenschaften in der Kontrollfunktion. Ich habe 270 Immobilien in meinem Kern. Die meisten von ihnen sind üblich. Aber ich habe eine erweiterte Funktionalität, die eine Vielzahl von Funktionen unterstützt. Daher eine solche Anzahl von Eigenschaften. Wir müssen mit den einfachsten Eigenschaften beginnen.

Ja, natürlich mit den einfachsten Eigenschaften. Aus welchen primitiven Objekten könnte derselbe Text Label bestehen? Oder aus welchen primitiven Objekten könnte ein einfacher Button bestehen?

Grund der Beschwerde: