Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
12. Programmatische Ermittlung/Einstellung der Wertgrenzen desSchiebereglers und des Feldes mit Schaltflächen (_V_MIN, _V_MAX, _V_STEP, _DIGITS).
1. öffnen wir ein Fenster mit Elementen mit den oben genannten Parametern:
2. Wir schreiben die Werte von _V_MIN, _V_MAX, _V_STEP, _DIGITS auf und geben sie in das Protokoll ein:
Ergebnis: Die Werte der Eigenschaften der Schiebereglerparameter werden protokolliert.
//---------------------------------------------------------------------------------------------------------------------------------------
3. Wiederholen wir den Vorgang mit dem Feld mit Schaltflächen. Im Gegensatz zum Schieberegler hat das Feld andere Zahlengrenzen und sein Wertetyp ist doppelt.
Ergebnis: DieWerte der Parametereigenschaften des Feldes mit Schaltflächen werden im Protokoll angezeigt.
//---------------------------------------------------------------------------------------------------------------------------------------
4. Setzen Sie andere Grenzen des Schiebereglerbereichs (zum ersten Mal getestet, das Ergebnis ist unbekannt).
Ergebnis: *Fand einProblem mit dem Bereich bei negativen Zahlen (wird in der nächsten Version behoben).
Prüfen wir mit positiven Bereichsgrenzen:
Ergebnis: Die Bereichsgrenzen wurden erfolgreich geändert.
Wichtigster Punkt: Der Bereich des Schiebereglers kann über seine Funktion geändert werden.
**Wichtig:Sie können den Wertetyp des Parameters nicht rückwirkend von int auf double oder umgekehrt ändern.
//-------------------------------------------------------------------------------------------------
Lassen Sie uns ein ähnliches Experiment mit dem Eingabefeld durchführen:
Ergebnis: Es funktioniert wie vorgesehen. Das Feld mit den Schaltflächen akzeptiert den angegebenen Bereich und Schritt. Wenn der Bereich überschritten wird, wird ein Fehler im Protokoll gemeldet.
//--------------------------------------------------------------------------------------------------
5. Schließlich setzen wir den Wert_DIGITS in das Feld mit den Schaltflächen (der Schieberegler funktioniert nicht, da sein Parametertyp int ist):
Ergebnis:
Ergebnisse:
Damit ist dieses Thema abgeschlossen.
13. Abfrage des Zustands von Elementen _GET_STATE.
Oft gibt es Situationen, in denen es notwendig ist, den Zustand des einen oder anderen Elements der Schnittstelle programmatisch abzufragen. Um dieses Problem zu lösen, wurde der Bezeichner _GET_STATE geschaffen.
//--------------------------------------------------------------------------------------------------------------------
*Wichtig:Bei der Anfrage_GET_STATE gibt die Funktion den Index des aktuellen Zustands des Elements zurück.
//--------------------------------------------------------------------------------------------------------------------
Die folgende Abbildung zeigt die Liste der Elementzustände.
1. Zustandsbezeichner :
(*in dernächsten Version wird das Präfix v_ durch das Präfix s_ ersetzt )
Ausgabe der Indizes in das Protokoll:
Testen wir das Abfragen und Abrufen von Elementzuständen:
1. das Fenster öffnen und den Anfangszustand der Schaltfläche "Start" abfragen:
Ergebnis: Der Wert 15, der dem Zustand v_NEUTRAL_STATE entspricht, wird ermittelt .
2. Erfassen wir die Zustände der Schaltfläche beim Drücken und Loslassen:
Um dies zu tun:
Ergebnis: Beim Ereignis Drücken/Freigeben wird der aktuelle Zustandsindex in das Protokoll geschrieben.
Zur Erinnerung:
//----------------------------------------------------------------------------------------------------------------
3. Wiederholen wir die Abfrage mit dem Kontrollkästchen.
1. Ermitteln wir den Zustand des Kontrollkästchens beim Öffnen des Fensters:
Ergebnis: Man erhält den Wert 15, der dem neutralen Zustand v_NEUTRAL_STATE entspricht (in dem sich das Kontrollkästchen befindet).
2. Als nächstes werden die Zustände des Kontrollkästchens beim Drücken und Loslassen abgefragt.
Um dies zu tun:
Ergebnis: Wir erhalten die Werte 66 (v_NEUTRAL_HIGHLIGHTED) und 67 (v_ACTIVATED_HIGHLIGHTED), also den hervorgehobenen neutralen und den hervorgehobenen gedrückten Zustand.
//-----------------------------------------------------------------------------------------------
Damit ist der erste Teil des Themas abgeschlossen.
Im zweiten Teil werden wir die Zustände der Dropdown-Liste D_LIST, des Schiebereglers H_SLIDER und der Eingabefelder S_EDIT und EDIT zurückgeben.
13. Statusabfrage _GET_STATE.
Teil 2: Abrufen der Zustände der Elemente D_LIST, H_SLIDER, EDIT, S_EDIT.
Im letzten Teil haben wir uns angesehen, wie man programmatisch die Zustände der BUTTON-Schaltfläche und des CHECKBOX-Kontrollkästchens abfragt. Die Abfrage _GET_STATE wurde verwendet, und die Liste der von den Funktionen zurückgegebenen Zustandsnamen wurde angezeigt. Es gibt insgesamt sechs Namen, von denen jeder mit dem Präfix v_ beginnt. (Eine Abkürzung für value, die durch s_ - eine Abkürzung für state - ersetzt wird ).
Erinnern Sie sich an die Zustandsindizes:
In diesem Fall sind die spezifischen Indexnummern nicht wichtig. Wenn der Benutzer einen bestimmten Zustand in eine Bedingung aufnehmen muss, verwendet er einen Bezeichner.
Beispiel 1:
Beispiel 2:
//-----------------------------------------------------------------------------------------------------------------
*Sehr wichtig:
Lassen Sie mich den wesentlichen Unterschied zwischen den Zuständen v_NEUTRAL_STATE und v_NEUTRAL_HIGHLIGHTED sowie zwischen v_ACTIVATED_STATE und v_ACTIVATED_HIGHLIGHTED erklären:
v_NEUTRAL_STATE - это нейтральное состояние в котором элемент находится неопределенное время. v_NEUTRAL_HIGHLIGHTED - это нейтральное состояние в которое элемент перешел ТОЛЬКО ЧТО, после отжатия пользователя. Поэтому элемент подсвечен - HIGHLIGHTED.
gilt das Gleiche für den aktivierten Zustand:
v_ACTIVATED_STATE - это активированное состояние в котором элемент находится неопределенное время. v_ACTIVATED_HIGHLIGHTED - это активированное состояние в которое элемент перешел ТОЛЬКО ЧТО, после нажатия пользователя. Поэтому элемент подсвечен - HIGHLIGHTED.
Dieser Unterschied macht einen großen Unterschied.
Derzeit geben die Schaltfläche und einige andere Elemente nur v_NEUTRAL_STATE und v_ACTIVATED_STATE zurück, nicht aber HIGHLIGHTED-Zustände wie z.B. ein Kontrollkästchen. Das bedeutet, dass der Benutzer keine Möglichkeit hat, zu wissen, ob Elemente gerade angeklickt oder nicht angeklickt wurden, oder wann, vor einer unbestimmten Zeit. Der Benutzer kann jedoch den Moment, in dem sie gedrückt wurden, in der API-Datei erfassen. Ja, aber diese Funktion ist im restlichen Programm noch nicht verfügbar. In der nächsten Version werden alle interaktiven Elemente mit der HIGHLIGHTED-Statusanzeige ausgestattet. Auf diese Weise kann der Benutzer von jeder Stelle des Programms aus erkennen, ob ein Element gerade gedrückt oder nicht gedrückt wurde, oder ob es sich schon lange in diesem Zustand befindet.
//----------------------------------------------------------------------------------------------------------
Kommen wir nun zum praktischen Teil:
1. öffnen Sie die Fenster:
2. Holen wir uns die Zustände der Elemente:
Ergebnis: Alle Elemente des D_LIST-Knotenshaben den Zustandsindex 15 (neutraler Zustand v_NEUTRAL_STATE). D_LIST hat einen Fehler zurückgegeben (-1).
Grund: Die Rückgabe von Zuständen dieses Elements ist in der zentralen Funktion nicht spezifiziert. Technischer Fehler.Er wird in der nächsten Version behoben.
Da die Funktion D_LIST den Zustandsindex noch nicht zurückgibt, wollen wir uns auf drei Elemente konzentrieren, deren Zustände erfolgreich empfangen wurden: EDIT , S_EDIT und H_SLIDER.
Was zu prüfen ist:
Wir haben soeben überprüft, dass die Elementfunktionen EDIT, S_EDIT und H_SLIDER beim Öffnen des Fensters einen Index des neutralen Zustands zurückgeben. Es bleibt noch, die anderen Zustände zu überprüfen. Da diese Arten von Elementen theoretisch nur die Zustände neutral, gesperrt und hervorgehoben annehmen können (im Gegensatz zu Schaltflächen und Kontrollkästchen, die mehr Zustände annehmen können), müssen wir die folgenden zwei möglichen Zustände prüfen: gesperrt und hervorgehoben. Es gibt auch eine Gruppe von Zuständen"unter dem Cursor", die ich noch nicht hinzufügen möchte, um Verwirrung zu vermeiden. In den nächsten Versionen werde ich ein spezielles Präfix erstellen, das eine individuelle Liste der möglichen Zustände für jeden Elementtyp öffnet. Dies wird die programmatische Arbeit erleichtern.
Wie werden wir die Rückkehr der blockierten und hervorgehobenen ZuständeEDIT, S_EDIT und H_SLIDER überprüfen:
1. Suchen Sie das Kontrollkästchen "Setze eine Option" in der API-Datei und schreiben Sie die Sperrung/Entsperrung der ElementeEDIT, S_EDIT und H_SLIDER in dessen Gehäuse.Geben Sie dann die Zustände über Print() aus.
Ergebnis:
//--------------------------------------------------------------------------------------------------
2. Zweite Aufgabe:
Erste Schritte:
Ergebnis:
//-----------------------------------------------------------------------------------------------------
Ergebnisse:
Im Allgemeinen können die Ergebnisse als zufriedenstellend bewertet werden. Die Elemente geben die Indizes der neutralen und gesperrten Zustände wie vorgesehen zurück. Allerdings gibt es einige Unzulänglichkeiten:
Schlussfolgerungen:
Potenziell ist es möglich, neue Elementzustände hinzuzufügen. Zum Beispiel "Neutral pointed" und "Activated pointed" ( neutral unter dem Cursor und aktiviert unter dem Cursor), aber es ist eine Frage der Praktikabilität und des tatsächlichen Bedarfs des Benutzers, diese Funktionen zu haben. Solange diese Anforderungen nicht erfüllt sind, werde ich keine neuen Zustände hinzufügen.
Das ist das Ende dieses Themas.
Weiter, zu den folgenden Themen.
Ich habe die letzte Woche damit verbracht, zu recherchieren, wie man eine Schnittstelle mit WinForm schreibt und sie in MT5-Charts einbettet. Heute habe ich es endlich realisiert.
Eine allgemeine Liste der zu beachtenden Themen:
1. die Orientierung in der Liste von intellisense und die Auswahl der Funktion des richtigen Fensters.
2. Programmgesteuertes Öffnen und Schließen von Fenstern.
3. das Öffnen einer Liste von programmatisch verfügbaren Fensterelementen.
4. das Öffnen einer Liste mit den Eigenschaften einzelner Elemente.
5. Parsen des Namens der Element- und Fenster-Wrapper-Funktion.
6. die Rückgabe des Wertes eines Elementparameters an eine Variable seines Typs.
7. Setzen von Werten für Elementparameter verschiedener Typen.
8. Rückgabe, Änderung und Weitergabe von Werten zwischen Parametern verschiedener Elemente. Betrachtung verschiedener Typen von Elementen und Werten und Test der Weiterleitung zwischen verschiedenen Typen von Elementen in verschiedenen Fenstern.
9. Rückgabe des letzten Wertes (_V_LAST). Wann und für welche Fälle wird der letzte Wert benötigt (nicht zu verwechseln mit dem aktuellen Wert).
10. Test zum Setzen der Zustände ON, OFF, LOCK_ON, LOCK_OFF, LOCK, UNLOCK für verschiedene Elementtypen.
11. Test der Bindung und Synchronisation von sich ändernden Werten von Elementen: z.B. Eingabefeld mit Schaltflächen und Schieberegler. So dass, wenn sich der Wert eines Elements (manuell oder softwaremäßig) ändert, sich der Wert im zweiten Element entsprechend ändert.
12. das Testen des Erhalts/Einstellens der Bereichsgrenzen des Schiebereglers und des Feldes mit Schaltflächen durch die Software (Eigenschaften _V_MIN, _V_MAX, _V_STEP, _DIGITS).
13. Testen der Funktionsweise der Abfrage des Elementstatus (_GET_STATE).
14. Verknüpfung von Text- und Rahmenfarben mit Wertabständen.
15. Orientierung in der API-Datei.
16. dieImplementierung einer einfachen Programmlogik für die Darstellung von Nachrichten- und Warnfenstern.
//------------------------------------------
Die berücksichtigten Themen sind gelb hervorgehoben.
Zum jetzigen Zeitpunkt gibt es noch einige, die berücksichtigt werden müssen:
14. Verknüpfung von Text- und Rahmenfarben mit Werteabständen.
15. Orientierung in der API-Datei.
16. dieImplementierung einer einfachen Programmlogik für die Darstellung von Meldungs- und Warnfenstern.
//------------------------------------------
Ich schlage vor, Thema 14 mit Thema 16 zu verknüpfen. Die Überschreitung der festgelegten Parameterwerte führt zunächst zu Signalen in Form einer Farbänderung von Teilen der Elemente (Text, Basis, Rahmen, Streifen usw.), dann zum Öffnen eines Dialogfensters und schließlich eines Warnfensters. Gleichzeitig blockiert das Warnfenster die Änderung der Werte in den Elementen, bis es vom Benutzer manuell geschlossen wird.
Außerdem würde ich gerne ein Thema in die Liste aufnehmen:
17. das Abbrechen eingegebener Einstellungen, wenn der Benutzer auf die Schaltfläche "Abbrechen" klickt.
Vor langer Zeit wurde die Technik des Abbrechens von Benutzereinstellungen durch Anklicken der Schaltfläche "Abbrechen" entwickelt und in gewissem Umfang getestet. Im Moment ist nicht bekannt, inwieweit die frühere Funktionalität funktioniert. Daher ist ein Test erforderlich.
Aufgrund der Überschneidung der Themen wird die Reihenfolge der Überprüfung wie folgt sein:
14. Implementierung eines gestaffelten Schutzes der Parametergrenzen:
15. Betrachten wir nun den Ausdruck der neuen API-Datei im Detail.
//----------------------------------------------------------------------------------------------------
Als nächstes werde ich alle gefundenen Fehler oder Mängel sammeln und eine Liste mit Aufgaben für die nächste Version erstellen.
Nach der nächsten Version mit Korrekturen und Ergänzungen werde ich mich auf die Tabellen konzentrieren, in denen ich eine der Hauptrichtungen der weiteren Entwicklung der Engine sehe.
Ich habe die letzte Woche damit verbracht, zu lernen, wie man eine Schnittstelle mit WinForm schreibt und sie in MT5-Charts einbaut. Heute habe ich endlich herausgefunden, wie man es macht.
Und wie werden Sie die Schnittstelle mit Ihrem Programmiercode kommunizieren lassen?
Und wie stellen Sie eine Verbindung zwischen der Schnittstelle und Ihrem Programmiercode her?
Noch ein paar Fragen: