
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
12. Obtention/réglage par programme des limites de valeur ducurseur et du champ avec boutons (_V_MIN, _V_MAX, _V_STEP, _DIGITS).
1. ouvrons une fenêtre contenant des éléments avec les paramètres ci-dessus :
2. Écrivons les valeurs de _V_MIN, _V_MAX, _V_STEP, _DIGITS et affichons-les dans le journal :
Résultat : les valeurs des propriétés des paramètres du curseur sont enregistrées.
//---------------------------------------------------------------------------------------------------------------------------------------
3. Répétons l'opération avec le champ à boutons. Contrairement au curseur, le champ a d'autres limites numériques et son type de valeur est double.
Résultat : lesvaleurs des propriétés des paramètres du champ avec boutons sont affichées dans le journal.
//---------------------------------------------------------------------------------------------------------------------------------------
4. Définir d'autres limites de la plage du curseur (testé pour la première fois, le résultat est inconnu).
Résultat : *J'ai trouvé unproblème avec la plage des nombres négatifs (correction dans la prochaine version).
Vérifions avec des limites de plage positives :
Résultat : les bornes de la plage ont été modifiées avec succès.
Point principal : La portée du curseur peut être modifiée à l'aide de sa fonction.
**Important :il n'est pas possible de modifier rétroactivement le type de valeur du paramètre de int à double ou vice versa.
//-------------------------------------------------------------------------------------------------
Réalisons une expérience similaire avec le champ de saisie :
Résultat : tout fonctionne comme prévu. Le champ avec les boutons accepte la plage et le pas spécifiés. Si la plage est dépassée, une erreur est signalée dans le journal.
//--------------------------------------------------------------------------------------------------
5. Enfin, définissons la valeur_DIGITS pour le champ avec boutons (le curseur ne fonctionnera pas car son type de paramètre est int) :
Résultat :
Résultats :
Ceci conclut ce sujet.
13. Interroger l'état des éléments _GET_STATE.
Il arrive souvent qu'il soit nécessaire d'obtenir par programme l'état de l'un ou l'autre élément de l'interface. Pour résoudre ce problème, l'identificateur _GET_STATE est créé.
//--------------------------------------------------------------------------------------------------------------------
*Important :à la demande de _GET_STATE, la fonction renvoie l'index de l'état actuel de l'élément.
//--------------------------------------------------------------------------------------------------------------------
L'image ci-dessous montre la liste des états de l'élément.
1. identifiants d'état :
(*dans laprochaine version, le préfixe v_ sera remplacé par le préfixe s_)
Indices affichés dans le journal :
Testons l'interrogation et la récupération des états d'un élément :
1. ouvrons la fenêtre et obtenons l'état initial du bouton "Start" :
Résultat : la valeur 15 correspondant à l'état v_NEUTRAL_STATE est obtenue .
2. Enregistrons les états du bouton à l'appui et au relâchement :
Pour ce faire :
Résultat : lors de l'événement pressé/relâché, l'index de l'état actuel est imprimé dans le journal.
Rappel :
//----------------------------------------------------------------------------------------------------------------
3. Répétons la requête avec la case à cocher.
1. Obtenons l'état de la case à cocher lors de l'ouverture de la fenêtre :
Résultat : on obtient la valeur 15, correspondant à l'état neutre v_NEUTRAL_STATE (où se trouve la case à cocher).
2. Ensuite, interrogeons les états de la case à cocher sur l'événement d'appui et de relâchement.
Pour ce faire :
Résultat : nous obtenons les valeurs 66 (v_NEUTRAL_HIGHLIGHTED) et 67 (v_ACTIVATED_HIGHLIGHTED), ce qui signifie que l'état neutre et l'état enfoncé sont mis en évidence.
//-----------------------------------------------------------------------------------------------
Ceci conclut la première partie du sujet.
Dans la deuxième partie, nous renverrons les états de la liste déroulante D_LIST, du curseur H_SLIDER et des champs de saisie S_EDIT et EDIT.
13. Demande d'état _GET_STATE.
Partie 2 : Obtenir les états des éléments D_LIST, H_SLIDER, EDIT, S_EDIT.
Dans la dernière partie, nous avons étudié la possibilité de renvoyer par programme les états du bouton BUTTON et de la case à cocher CHECKBOX . La requête _GET_STATE a été utilisée et la liste des noms d'états renvoyés par les fonctions a été affichée. Il y a six noms en tout, chacun commençant par le préfixe v_. (abréviation de value, qui sera remplacée par s_ - abréviation de state).
Rappelons les indices d'état :
Dans ce cas, les numéros d'index spécifiques ne sont pas importants. Lorsque l'utilisateur a besoin de placer un état particulier dans une condition, il utilise un identifiant.
Exemple 1 :
Exemple 2 :
//-----------------------------------------------------------------------------------------------------------------
*Très important :
Permettez-moi d'expliquer la différence essentielle entre les états v_NEUTRAL_STATE et v_NEUTRAL_HIGHLIGHTED, et entre v_ACTIVATED_STATE et v_ACTIVATED_HIGHLIGHTED:
v_NEUTRAL_STATE - это нейтральное состояние в котором элемент находится неопределенное время. v_NEUTRAL_HIGHLIGHTED - это нейтральное состояние в которое элемент перешел ТОЛЬКО ЧТО, после отжатия пользователя. Поэтому элемент подсвечен - HIGHLIGHTED.
il en va de même pour l'état activé :
v_ACTIVATED_STATE - это активированное состояние в котором элемент находится неопределенное время. v_ACTIVATED_HIGHLIGHTED - это активированное состояние в которое элемент перешел ТОЛЬКО ЧТО, после нажатия пользователя. Поэтому элемент подсвечен - HIGHLIGHTED.
Cette différence fait toute la différence.
Actuellement, le bouton et certains autres éléments ne renvoient que v_NEUTRAL_STATE et v_ACTIVATED_STATE, et ne renvoient pas d' état HAUTE LUMIERE comme une case à cocher. Cela signifie que l'utilisateur n'a aucun moyen de savoir si les éléments ont été cliqués/décliqués à l'instant même, ou quand, il y a un temps indéfini. Toutefois, l'utilisateur peut connaître le moment où il a appuyé sur l'élément dans le fichier API. Oui, mais cette fonctionnalité n'est pas encore disponible dans le reste du programme. Dans la prochaine version, le retour d'état en surbrillance sera ajouté à tous les éléments interactifs. Ainsi, de n'importe quel endroit du programme, l'utilisateur pourra savoir si un élément vient d'être appuyé/désappuyé, ou s'il est dans son état depuis longtemps.
//----------------------------------------------------------------------------------------------------------
Passons à la partie pratique :
1. ouvrons les fenêtres
2. Obtenons les états des éléments :
Résultat : tous les éléments du cnome D_LISTont l' indice d'état 15 (état neutre v_NEUTRAL_STATE). D_LIST a renvoyé une erreur (-1).
Motif : le retour des états de cet élément n'est pas spécifié dans la fonction centrale. Défaut technique.Il sera corrigé dans la prochaine version.
Puisque la fonction D_LIST ne renvoie pas encore l'indice d'état, concentrons-nous sur trois éléments dont les états ont été reçus avec succès: EDIT , S_EDIT et H_SLIDER.
Ce qu'il faut vérifier :
Nous venons de vérifier que les fonctions EDIT, S_EDIT et H_SLIDER renvoient un index de l'état neutre à l'ouverture de la fenêtre. Il reste à vérifier les autres états. Comme ces types d'éléments ne peuvent théoriquement se trouver que dans les états neutre, verrouillé et en surbrillance (contrairement aux boutons et aux cases à cocher, qui ont plus d'états), nous devons vérifier les deux états possibles suivants : verrouillé et en surbrillance. Il existe également un groupe d'états"sous le curseur", que je ne souhaite pas encore ajouter pour éviter toute confusion. Dans les prochaines versions, je créerai un préfixe spécial qui ouvrira une liste individuelle des états possibles de chaque type d'élément. Cela facilitera le travail de programmation.
Comment allons-nous vérifier le retour des étatsEDIT, S_EDIT et H_SLIDER bloqués et mis en évidence ?
1. Trouvez la case à cocher "Définir une option" dans le fichier API et écrivez le verrouillage/déverrouillage des élémentsEDIT, S_EDIT et H_SLIDER dans son cas.Produisez ensuite les états à l'aide de Print().
Résultat :
//--------------------------------------------------------------------------------------------------
2. Deuxième tâche :
Commencez :
Résultat :
//-----------------------------------------------------------------------------------------------------
Résultats :
En général, les résultats peuvent être évalués comme satisfaisants. Les éléments renvoient les indices des états neutre et verrouillé comme prévu. Cependant, il y a quelques lacunes :
Conclusions :
Potentiellement, il est possible d'ajouter de nouveaux états d'éléments. Par exemple, Neutre pointé et Activé pointé ( neutre sous le curseur et activé sous le curseur), mais il y a une question de praticité et de besoin réel de l'utilisateur de disposer de ces caractéristiques. Tant que ces exigences ne seront pas satisfaites, je n'ajouterai pas de nouveaux états.
C'est la fin de ce sujet.
Pour plus d'informations, voir les sujets suivants.
J'ai passé la semaine dernière à chercher comment écrire une interface en utilisant WinForm et l'intégrer dans les graphiques MT5. Aujourd'hui, je l'ai enfin réalisé.
Une liste générale de sujets à prendre en considération :
1. l'orientation dans la liste d'intellisense et la sélection de la fonction de la bonne fenêtre.
2. Ouverture et fermeture de fenêtres par programmation.
3. l'ouverture d'une liste d'éléments de fenêtre disponibles par programme
4. ouverture d'une liste de propriétés d'éléments individuels
5. Analyse du nom de l'élément et de la fonction d'enveloppe de la fenêtre.
6. renvoi de la valeur d' un paramètre d'élément à une variable de son type
7. Définition de valeurs pour des paramètres d'éléments de types différents.
8. Renvoyer, modifier et transmettre des valeurs entre les paramètres de différents éléments. Considérer différents types d'éléments et de valeurs, et tester la transmission entre différents types d'éléments dans différentes fenêtres.
9. Renvoi de la valeur précédente (_V_LAST). Quand et dans quels cas la dernière valeur est requise (à ne pas confondre avec la valeur actuelle).
10. Test de réglage des états ON, OFF, LOCK_ON, LOCK_OFF, LOCK, UNLOCK pour différents types d'éléments.
11. test de liaison et de synchronisation des valeurs changeantes des éléments : par exemple, champ de saisie avec boutons et curseur. Ainsi, lorsque la valeur d'un élément (manuel ou logiciel) change, la valeur du second élément change en conséquence.
12) Test de l'obtention/du réglage par le logiciel des limites de la plage du curseur et du champ avec boutons (propriétés _V_MIN, _V_MAX, _V_STEP, _DIGITS).
13. Test du fonctionnement de l'interrogation sur l'état de l'élément (_GET_STATE).
14. Lier les couleurs du texte et de la bordure aux limites des valeurs espacées.
15. Orientation dans le fichier API.
16.mise en œuvre d'une logique de programme simple pour l'apparence des fenêtres de message et d'avertissement.
//------------------------------------------
Les sujets qui ont été examinés sont surlignés en jaune.
Pour l'instant, il en reste encore quelques-uns à examiner :
14. Lier les couleurs du texte et du cadre aux limites des valeurs espacées.
15. Orientation dans le fichier API.
16.mise en œuvre d'une logique de programme simple pour l'apparence des fenêtres de message et d'avertissement.
//------------------------------------------
Je suggère de lier le sujet 14 au sujet 16. Le dépassement des limites fixées pour les valeurs des paramètres entraînera d'abord des signaux sous la forme d'un changement de couleur de certaines parties des éléments (texte, base, cadre, bande, etc.), puis l'ouverture d'une fenêtre de dialogue, et enfin d'une fenêtre d'avertissement. En même temps, la fenêtre d'avertissement bloquera les changements de valeurs dans les éléments jusqu'à ce qu'elle soit fermée manuellement par l'utilisateur.
J'aimerais également ajouter un thème à la liste :
17. l'annulation des paramètres saisis lorsque l'utilisateur clique sur le bouton "Annuler".
Il y a longtemps que la technologie permettant d'annuler les paramètres de l'utilisateur en cliquant sur le bouton "Annuler" a été développée et, dans une certaine mesure, testée. À l'heure actuelle, on ne sait pas dans quelle mesure l'ancienne fonctionnalité fonctionne. Un test est donc nécessaire.
En raison du chevauchement des sujets, l'ordre d'examen sera le suivant :
14. Mise en œuvre d'une protection échelonnée des limites des paramètres :
15. Examinons en détail l'impression du nouveau fichier API.
//----------------------------------------------------------------------------------------------------
Ensuite, je rassemblerai tous les bogues ou défauts trouvés et dresserai une liste de tâches pour la prochaine version.
Après la prochaine version avec les corrections et les ajouts, je me concentrerai sur les tables, dans lesquelles je vois l'une des principales directions de développement du moteur.
J'ai passé la semaine dernière à apprendre comment écrire une interface à l'aide de WinForm et à l'intégrer dans les graphiques MT5. Aujourd'hui, j'ai enfin trouvé comment le faire.
Et comment allez-vous faire pour que l'interface communique avec votre code de programmation ?