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

 
hini #:
J'ai téléchargé le gif, je ne sais pas si c'est un problème avec mon système d'exploitation. Je le signale simplement.
Merci de l'avoir signalé. Je n'ai pas testé cette option de redimensionnement du graphique. Je vérifierai l'événement dans OnChartEvent().


 
hini #:
J'ai téléchargé le gif, je ne sais pas si c'est un problème avec mon système d'exploitation. Je le signale simplement.
Oui, j'ai trouvé la cause. Le redimensionnement du graphique de différentes manières génère différentes combinaisons d'événements OnChartEvent(). Lors d'un changement manuel, l'événement OnChartChange est déclenché deux fois (j'ai vérifié). Lorsque l'on change de graphique - une ou deux fois. Lorsque l'on ferme la fenêtre du navigateur une fois, mais que d'autres événements arrivent en tant que CharEvent Custom. Lorsque l'on déplace la fenêtre du terminal vers un autre moniteur - une fois.

En général, il est nécessaire d'écrire des conditions pour attraper toutes les variantes de combinaisons d'événements lors du changement de taille des graphiques.
 
J'aimerais ajouter pourquoi vous ne pouvez pas simplement vérifier les tailles des graphiques en les comparant à celles qui ont été enregistrées précédemment.

Lorsque l'on change de graphique, les fonctions ChartGetInteger() des tailles de graphique envoient des valeurs incorrectes, de sorte que l'algorithme "pense" que les tailles ont été modifiées et que la barre des tâches "saute" de sa place. J'ai dû travailler dur pour contourner ce problème. Je vais maintenant vérifier quelles valeurs de tailles de graphiques sont transmises aux fonctions ChartGetInteger() lors de ces événements.
 
En d'autres termes, lorsque l'on passe d'un graphique à l'autre, les tailles ne changent pas, mais l'événement ChartChange se produit, mais la fonction ChartGetInteger() indique TOUJOURS les tailles 480 (largeur) et 167 (hauteur) pour une raison quelconque. Toujours et quelle que soit la taille du graphique. (Build 2470. Je n'ai pas encore vérifié la nouvelle version).
 
Dans la nouvelle version (4435), lorsque l'on passe d'un graphique à l'autre, la fonction ChartGetInteger() renvoie les valeurs 490 pour la largeur et 103 pour la hauteur. Les tailles réelles des graphiques sont 1068 en largeur et 438 en hauteur.

Notez que les tailles ne changent pas lorsque l'on passe d'un graphique à l'autre.
 
Sur la base de ces conditions, je continuerai à étudier les particularités des événements entrants afin de distinguer les changements réels de la taille des graphiques des changements erronés. Et lorsque les développeurs auront corrigé la fonction, je me contenterai de simplifier le code. :)
 
J'ai testé différents événements de redimensionnement de graphiques. Le problème ne semble se poser que lors du changement de graphique, où il n'y a pas de redimensionnement réel. Mais la fonction ChartGetInteger() signale de manière persistante que la valeur de 490 est passée à 103.

Tout va bien pour les autres événements.


Correction de la barre des tâches dans la prochaine version.
 
Реter Konow redimensionnement du graphique. Le problème ne semble se produire que lorsque le graphique est commuté, auquel cas il n'y a pas de redimensionnement réel. Cependant, la fonction ChartGetInteger() indique systématiquement 490 à 103.

Tous les autres événements sont corrects.


Le problème de la barre des tâches sera corrigé dans la prochaine version.
Merci pour votre travail ! J'attends avec impatience votre travail.
 
hini #:
Merci pour le travail accompli ! J'ai hâte de voir votre travail.
Je vous remercie de votre attention.
 

Nettoyé, recompilé, réinstallé.

Je vais énumérer ce que j'ai remarqué, sans ordre particulier :

1. Après avoir ouvert une fenêtre, rien n' apparaît dans la barre des tâches. Après avoir réduit la fenêtre, le bouton apparaît. Après le dépliage, il ne disparaît pas. Si le concept de comportement "comme dans Windows" est conçu, il devrait apparaître immédiatement.

2. Avec une fenêtre dynamique, après que le curseur a été déplacé sur les boutons de minimisation et de maximisation, ceux-ci restent en surbrillance tant que le curseur se trouve à l'intérieur de la fenêtre.

3) Avec une fenêtre dynamique, l' en-tête devient gris après l' agrandissement, reste gris après le retour, et ne reprend sa couleur qu'après la réduction et le retour.

4. La fenêtre agrandie ne masque pas les échelles de temps et de prix sur le graphique.

5. Un tableau placé sous"H_TAB, "Rapport" par la commande"i, AT, _X2X, "MF", 5, _Y2H, "Rapport", 5," ignore le réglage du bord gauche. Idem avec"i, AT, _X2X, "MF", 5, _Y2Y, "MF", 20,".

6. Plus important encore. Le fait que la fenêtre dynamique ne permette pas l'utilisation de V_BOX a complètement changé ma conception. Les deux tableaux étaient dans leurs propres boîtes pour faciliter le positionnement et le défilement. Maintenant que j'ai dû les dessiner directement sur le "MF", je ne peux plus positionner le tableau du bas immédiatement en dessous de celui du haut. Liaison "i, AT, _X2X, "MF", 5, _Y2H, "Table1", 5,"ne fonctionne pas car le nom du groupe Table1 n'est pas un élément. J'ai réussi à me lier à la dernière ligne du tableau, mais ce n'est pas possible avec un tableau dynamique. Je n'ai pas trouvé comment faire référence au tableau et non au groupe. S'il est prévu d'ajouter des lignes au tableau de manière programmatique, alors la manière d'adresser le tableau est supposée.

7. Encore une chose. Votre fenêtre dynamique est une fenêtre homologue qui peut être agrandie et réduite. J'aimerais que ce ne soit pas une fenêtre, mais un bureau. Comme dans votre constructeur. Pour qu'il

a) s'ouvre immédiatement dépliée, couvrant tout le graphique

b) n'ait pas d'en-tête et de cadre (seulement une barre des tâches)

c) ne puisse pas être réduite

d) permette de placer des éléments comme une fenêtre normale.

En d'autres termes, remplacez DINAMIC par FULLSCREEN ou DESKTOP. Vous disposez déjà de la base nécessaire.