Galerie d'interfaces utilisateur écrites en MQL - page 41

 

Bonsoir chers membres du forum.

Le moment est enfin venu de sortir le moteur et d'aider ceux qui veulent créer de grands programmes très sympas avec une interface graphique riche en MQL5. Cet objectif est maintenant à portée de main.

Et donc :

1. La première version du moteur. Je tiens à souligner le mot "première". Rien n'est jamais parfait la première fois. Vous trouverez probablement des bogues que je n'ai pas remarqués. Ce n'est pas grave. Je n'ai jamais eu de bogues que je n'ai pas encore traités. Tout est résolu rapidement.

2. Le moteur n'est pas complètement terminé. Pour l'instant, l'application"conditional-user" (1) EA Shell v1.mq5 (spécialement écrite pour tester le moteur) capture tous les événements des contrôles de l'interface graphique créée. Cela permet déjà au code utilisateur de réagir de manière programmatique. Les événements arrivent, apportent des valeurs aux cas nécessaires de la fonction OnGuiEvent() ; C'est là, dans le fichier API, que l'utilisateur écrira son code de réactions aux événements de l'interface.

3. Beaucoup de travail a été fait sur le moteur. Les changements ont affecté les niveaux locaux et globaux. Plus loin, je décrirai en détail ce que j'ai écrit et refait pendant cette période. La liste sera longue.

4. La version contient des instructions d'installation dans le fichier ReadMe.txt. Cependant, j'ajouterai des images pour plus de clarté. Si ce n'est pas clair, demandez. Je vous aiderai.


En général, prenez la version et commençons.

Dossiers :
 

Suite à l'installation de la nouvelle version du constructeur, vous devriez voir un menu contextuel mis à jour (double-clic sur le graphique) :


Si vous voyez un tel menu, c'est que l'installation a réussi.

 

Cette installation n'est pas différente de la précédente. Les mêmes étapes dans le même ordre.

Il y a des instructions textuelles sur ce blog. Et aussi en images :

https://www.mql5.com/ru/blogs/post/758425

KIB-DRIVE instalation instractions
KIB-DRIVE instalation instractions
  • www.mql5.com
This archive contains: //------------------------------------------------------------------------------ 1. Folder     (1) KIB 1.0
 

Séparément, j'aimerais mentionner le nouveau fichier EA Shell v1.mq5

Enregistrez-le dans le dossier EAs, mais ne le compilez qu'après avoir imprimé le fichier API dans le constructeur. Il s'agit des connexions dans son en-tête.

1. Exécutez le constructeur et l'indicateur comme précédemment sur un graphique.

2. Ouvrez immédiatement le menu contextuel et imprimez les fichiers UIDATA et API.

3. Transférer ces fichiers dans le dossier à ce chemin :

#include<(2)  KIB PROJECTS\(5) USER PROJECTS\Project 1\

4. Compilez EA Shell v1.mq5 et déposez-le sur un autre graphique.

5. Terminé.

 

Un peu d'instruction en images :

1.


2.


3.


4.


5.


6.


7.


 
Petites instructions d'installation (1) EA Shell v1.mq5 plus...
 

1.



2.


3.



4.



5.



6.



7.


DiscussionForumPosting - Schema.org Type
  • schema.org
Schema.org Type: DiscussionForumPosting - A posting to a discussion forum.
 

Les fenêtres de paramétrage ci-dessus sont destinées à tester la connexion et la réponse aux événements de l'interface par une fonctionnalité personnalisée.

Pour ce faire, ouvrez le fichier API et écrivez vos appels.

Par défaut, les événements d' interface appellent la fonction Alert() en imprimant leur identifiant et la valeur du paramètre sur les événements d'impact sur les éléments.

 
Je testerai la nouvelle version plus tard.
 

Une liste des corrections et des mises à jour de cette version et de la suivante :

Changements globaux :

  • Le fichier Internal_API a été renommé en ARI.
  • Toutes les définitions et fonctions qui ne sont pas pertinentes pour le travail de l'utilisateur avec les contrôles ont été supprimées du fichier API. Elles ont été partiellement déplacées dans le fichier UIDATA.
  • La méthode de liaison entre le code utilisateur et les contrôles a été fondamentalement modifiée. L'utilisateur aura un accès direct au noyau G_CORE où les contrôles sont stockés. L'accès est réalisé par le biais de fonctions d'enveloppe qui sont imprimées automatiquement dans le fichier UIDATA.
  • Un préfixe spécial est ajouté aux noms des fonctions enveloppantes afin de faciliter la recherche des éléments par le biais de l'intellisense.
  • Possibilité de créer un menu contextuel pour une application utilisateur. Une zone spéciale du fichier #include<(2) KIB PROJECTS\(1) Must be included\User section\My menu section.mqh> a été allouée.
  • Ajout de la possibilité de placer des boutons dans la partie droite de la barre des tâches de l'utilisateur. Une zone spéciale dans le fichier #include<(2) KIB PROJECTS\ (1) Must be included\NUser section\NMy Taskbar section.mqh> a été préparée à cet effet.
  • Le menu contextuel personnalisé et la barre des tâches sont désormais appelés à partir du menu contextuel du constructeur et n'interfèrent pas avec l'édition d'autres fenêtres :


  • Le menu contextuel de l'utilisateur peut appeler des fenêtres de menu junior.

Voici à quoi cela ressemble après avoir sauvegardé le projet et basculé en mode application utilisateur sur un autre graphique : .

  • Le comportement des fenêtres du menu contextuel est similaire à leur comportement dans l'environnement d'application Windows.

  • Les options du menu contextuel peuvent appeler des fonctions ou des fenêtres. Si une option de menu appelle une fenêtre, l'icône de la fenêtre est automatiquement placée à gauche.



  • Modifications et améliorations locales :

  • Correction d'un problème de saut de la barre des tâches lors du passage d'un graphique à l'autre. Elle s'adapte désormais mieux et plus rapidement au redimensionnement de la fenêtre.
  • Lescurseurs fonctionnent mieux :
  • L'onglet de valeur (S_WIDGET) tient toujours compte des chiffres de la valeur et prend la taille en fonction de la taille du texte de la valeur maximale (ou minimale).
  • Le tableau d'affichage est positionné sur l'un des 4 côtés, selon le souhait de l'utilisateur (défini par des drapeaux).
  • Le curseur permet de faire basculer n'importe quelle valeur dans n'importe quelle avec n'importe quelle Le curseur fait basculer n'importe quelle valeur dans n'importe quelle plage avec n'importe quel nombre de décimales, et dans n'importe quel pas spécifié.
  • Le nombre de décimales (précision de la valeur) est défini par l'utilisateur (mot DIGITS).
  • La taille du curseur et la plage de valeurs ne jouent aucun rôle. L'algorithme calcule le mouvement du curseur à travers la plage de manière à ce que l'une des extrémités ait toujours un minimum et l'autre un maximum.
  • Lorsque l'on clique sur la piste du curseur, celui-ci se déplace automatiquement à l'endroit où l'on a cliqué et continue à se déplacer de manière synchronisée avec l'utilisateur si l'on appuie sur le bouton de la souris.
  • Il est prévu d'ajouter la possibilité de faire défiler le curseur à travers la piste du curseur à l'aide de la molette de la souris.


  • Correction de problèmes avec la liste déroulante.

  • La liste ne saute plus lorsque l'on clique sur le bouton d'ouverture.
  • Correction d'un problème de disparition de la liste lors du défilement vers le bas.
  • La liste peut être déroulée avec la molette même si le curseur est sur la barre de défilement ou les boutons.
  • Le défilement de la liste avec la molette de la souris est désormais plus rapide.


  • Problème de faux clics résolu :

  1. Auparavant, le fait d'appuyer sur un bouton ou un autre élément similaire entraînait un changement d'état même si l'appui se produisait en dehors de l'espace de l'élément. Ce problème a été résolu. Si l'utilisateur clique sur un élément mais change d'avis et déplace le curseur, ou le déplace vers un autre élément ou un espace libre de la carte, l'élément du premier clic reviendra toujours à l'état précédent. Comme si rien ne s'était passé. L'événement sera annulé et la valeur du paramètre ne sera pas modifiée. La fixation du faux clic vous permet d'annuler le clic au dernier moment en déplaçant simplement le curseur (avec le bouton de la souris toujours enfoncé) vers un autre espace.


  • Il a été décidé de se concentrer sur la création de modèles pour les fenêtres de paramétrage professionnelles de type Windows afin de faciliter leur création par les utilisateurs. Les fenêtres Paramètres exemple 1 et Paramètres exemple 2 incluses (appelées à partir du menu contextuel et de la barre des tâches) sont un bon exemple de ces fenêtres :

  • La possibilité de bloquer des messages a été ajoutée.

    Exemple :

Ouvrez d'abord les différentes fenêtres de paramétrage. Leurs boutons se trouvent en bas de la barre des tâches. Ensuite, allez dans le menu contextuel (double-clic sur le graphique) et ouvrez la fenêtre "Désolé, cet ordre est bloqué". Elle se trouve ici :


Essayez ensuite de cliquer sur n'importe quelle fenêtre précédemment ouverte alors que la fenêtre "Sorry, this order is blocked" est ouverte. Toute action sur d'autres fenêtres sera bloquée jusqu'à ce que cette fenêtre soit fermée. Vous pouvez toutefois limiter la liste des fenêtres bloquées dans les propriétés de la fenêtre dans le code cybernétique. Certaines fenêtres seront alors bloquées et d'autres non. Cela dépend de la décision de l'utilisateur.


  • Désormais, les fenêtres de dialogue peuvent être ouvertes avec du son. Ceci est défini par le code KIB dans les propriétés de la fenêtre.
  • Les fenêtres de dialogue ont une priorité spéciale sur les autres fenêtres et sont toujours affichées au-dessus des fenêtres de paramétrage.
  • Les boutons des fenêtres de dialogue (Ok, Annuler, Confirmer, Fermer) fonctionnent et ferment leur fenêtre automatiquement lorsqu'ils sont actionnés.


  • La fonction de minimisation des boîtes de dialogue peut être désactivée. Dans ce cas, elles ne peuvent pas apparaître dans la barre des tâches.


  • Le nom de la fenêtre peut être situé à gauche ou au centre. Il est défini par un indicateur dans les propriétés de la fenêtre (cyb-code).
  • Les fenêtres de dialogue peuvent être appelées par programme à partir de l'application de l'utilisateur.
  • Les fenêtres de dialogue peuvent être fermées automatiquement lorsque l'on clique sur une autre fenêtre ou un autre graphique. Cette possibilité est définie par l'utilisateur dans les propriétés de la fenêtre, dans le cyb-code.