Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Crowdsourced GUI. Offene Beta-Tests.
Alexey Barbashin, 2020.03.07 21:25
"aber vielleicht ist es einfacher, alles in Objekten zu machen" - das ist mehr als logisch
"Ja, natürlich werden wir uns teilweise darauf verlassen." - dann werden wir sofort korrigiert:
class CCoordPBase Наследуемся от CObject, то есть: class CCoordPBase : public CObject Хотя наверное можно и по другому: class Control : public CObject
CObject ist die Basisklasse für alle Objekte in der Entwicklerbibliothek. Hergestellt in Analogie zu C++ und C#. Das Basisobjekt (Typ) in Sharp ist Object.
Koordinaten und Abmessungen sind Eigenschaften des Steuerelements, ebenso wie Rahmenfarbe, -farbe und -dicke, Radien von Rundungen, Symbolen und Text.
Wir müssen zunächst definieren, welche Art von Kontrolle elementar ist und dann die grundlegenden Eigenschaften beschreiben.
Natürlich können einige der zuvor definierten Eigenschaften in den Nachkommen nicht verwendet werden, das ist kein Problem, aber es ist besser, die grundlegende Eigenschaft zur vielseitigsten zu machen.
Hier ist ein Beispiel für eine einfache Universalsteuerung:
Enthält Hintergrund, Rahmen, Radius, Symbol, Text
Wenn Sie eine Beschriftung benötigen, geben Sie Hintergrund, Rahmen und Symbol nicht an; wenn Sie ein Panel benötigen, wird der Inhalt nicht angegeben; wenn Sie eine Bildschaltfläche benötigen, wird nur das Symbol angegeben; wenn Sie eine Schaltfläche mit einem Bild benötigen, werden Hintergrund, Rahmen und Bild angegeben.
Das heißt, diese Zusammensetzung ist für die meisten Kontrollen ziemlich universell.
Verstehe, die Frage nach dem Ändern des Stils beim Hovern mit Speichern der Koordinaten... obwohl es irgendwie schon klar ist
Gibt es eine Standard-Biliotec-Kontrolle?
Das Wesen vonCObject besteht darin, alle Objekte zu typisieren.
Wir brauchen zum Beispiel eine Listenbibliothek (Liste von Elementen, Kombinationsfeld, Checkliste usw.). Für jede Art von Elementen können wir einen anderen Array-Typ erstellen, wie es Anatoly getan hat, oder Sie können ein vorgefertigtes Werkzeug verwenden:CArrayObj
Das heißt, viele Teile des Codes müssen nicht erfunden werden, sie sind bereits vorhanden, man braucht sie nur zu verwenden.
Ich verstehe, dass, die Frage ist über die Änderung der Stil auf schwebende unter Beibehaltung der Koordinaten ... obwohl es bereits klar zu sein scheint
Gibt es ein Standard-Bilio auf der Steuerung?
Die Standardbibliothek der Entwickler kann als Grundlage genommen werden, ich sehe darin nichts Peinliches, ihre Hierarchie.
Natürlich sollten wir von dort aus alles wegwerfen, was mit der direkten Konstruktion zusammenhängt, aber das System der Übertragung von Ereignissen lassen - es ist wirklich universell!
Mit dieser Technologie werden Ereignisse durch das typisierte System des Elementarobjekts weitergeleitet, unabhängig davon, zu welcher Klasse selbst das komplexeste Steuerelement gehört.
Das grundlegende Steuerelement wird in den zugrunde liegenden CControls gezeichnet, woraufhin das Ereignis OnPaint() erzeugt wird. Dies ermöglicht dem Benutzer, die untergeordneten Steuerelemente neu zu zeichnen bzw. neu zu zeichnen und generell das Steuerelement nach Belieben neu zu zeichnen.
Komm schon!!!!!
und ich habe mir überlegt, eine einfache Interaktion zu schaffen
wo wir Positionierungen eingeben, z.B. links vom letzten Objekt im Falle von Zeilen oder Spalten
Wir werden also einen universellen Controller schreibenGenau so sollte es gemacht werden: Schreiben Sie die elementare Interaktion.
Ein grundlegender Controller muss zu Beginn nicht alle notwendigen Eigenschaften haben, es reicht ein Hintergrund aus.
Denn um das Steuerelement selbst zu rendern, wird es die entsprechende Funktion enthalten. Wenn wir also Eigenschaften hinzufügen, müssen wir nur eine Funktion ändern.
Nach der Hierarchie der Elemente?
CObject ist ein Basistyp
class CControl : public CObject - die Basissteuerung der Bibliothek selbst
class CContainerControl : public CControl - die Gruppensteuerung. Eines der Felder wird ein Array von verschachtelten Steuerelementen sein. Ein Beispiel ist in derCWndContainer-Standardbibliothek zu finden.
Sasha, da Sie bereits mit der Programmierung begonnen haben, machen Sie ein Open-Source-Projekt in MQL, dann können Sie es gemeinsam entwickeln und mit den anderen teilen. Wer weiß, vielleicht wird es welche geben.
Ich bin vorerst in der Warteschleife... Blick in die Standardbibliotheken.... es gibt eine Menge unnötiger Dinge
Ich weiß nicht, ob es viele von ihnen gibt, aber es wäre besser, eine eigene Kontrolle zu schreiben... oder erbenCChartObject
- www.mql5.com
Ich bin vorerst in der Warteschleife... Blick in die Standardbibliotheken.... es gibt eine Menge unnötiger Dinge
(wenn auch nicht viel))), aber Sie sollten besser Ihre eigene Kontrolle schreiben... oder Sie können sie vererbenCChartObject
Nein, nein!!!
Schauen Sie genau hin!
Dieser Controller ist genau der richtige Weg ins Nirgendwo! Wir brauchen keine diskreten Diagrammobjekte! Wir müssen auf der Leinwand zeichnen - nur so können wir uns weiterentwickeln und unsere Möglichkeiten erweitern.
Und die Tatsache, dass man seinen eigenen Haupt-Controller bauen muss - das ist sicher.
Die Standardbibliothek teilt Eigenschaften und Zustände zwischen CWndObject und CWnd auf, während wir alles in einem Steuerelement vereinen müssen.
Nein, nein!!!
Schauen Sie genau hin!
Dieser Controller ist der Weg ins Nirgendwo! Wir brauchen keine diskreten Diagrammobjekte! Wir müssen auf Leinwänden zeichnen - das ist das Einzige, was uns Entwicklung und breite Möglichkeiten bietet.
Und die Tatsache, dass man seinen eigenen Haupt-Controller bauen muss - das ist sicher.
Die Eigenschaften und Zustände in der Standardbibliothek sind zwischen CWndObject und CWnd aufgeteilt, und wir müssen alle in einem Steuerelement vereinen.
Ich habe eine Viertelstunde damit verbracht, ein Projekt zu erstellen, und es hat sich herausgestellt, dass es erstellt wurde, jetzt überlege ich, wie ich es veröffentlichen kann.
Ich denke, es ist ein bisschen früh, um mit einem Neuanfang zu beginnen.
Ich bin sicher, dass es keine gute Idee ist, bei Null anzufangen.
Sehr clevere Leute haben viel Zeit und Wissen investiert, um die gleiche Standardbibliothek oder Anatolys Bibliothek zu erstellen.
Die Menschen haben Zeit und Wissen investiert, und es wäre dumm, es nicht zu nutzen.
Wir sollten einfach das aus unserer Sicht Beste von beiden nehmen und ein neues bauen.
Wir müssen aus den Fehlern der anderen lernen. Wir werden unsere eigenen machen.)
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.