Cours pour la création de panneaux et de dialogues

 

Ce sont les classes. Il y a, bien sûr, beaucoup de questions, même trop. Mais l'une d'entre elles est la principale pour le moment.

Il n'y a aucun moyen de créer un panneau sur le graphique des prix à partir de l'indicateur dans la sous-fenêtre ?

 
Dmitry Fedoseev:

Ce sont les classes. Il y a, bien sûr, beaucoup de questions, même trop. Mais l'une d'entre elles est la principale pour le moment.

Il n'y a aucun moyen de créer un panneau sur un graphique de prix à partir d'un indicateur dans une sous-fenêtre ?

N'est-ce pas (\MQL5\Indicators\Examples\Panels\SimplePanel\SimplePanel.mq5) ?

EURUSDM1

 
Vladimir Karputov:

Ce n'est pas ça (\MQL5\Indicators\Examples\Panels\SimplePanel\SimplePanel.mq5) ?

Ce n'est pas le cas. L'indicateur lui-même est dessiné dans la sous-fenêtre, tandis que le panneau doit être créé sur le graphique des prix. Il n'y a pas de réaction au paramètre subwin. A en juger par le code dans Dialog.mqh, il ne devrait pas :

bool CAppDialog::CreateIndicator(const int x1,const int y1,const int x2,const int y2)
  {
   int width=m_chart.WidthInPixels();
//--- geometry for the minimized state
   m_min_rect.LeftTop(0,0);
   m_min_rect.Width(width);
   m_min_rect.Height(CONTROLS_DIALOG_MINIMIZE_HEIGHT-2*CONTROLS_BORDER_WIDTH);
//--- determine subwindow
   m_subwin=ChartWindowFind();

J'ai déjà trouvé un moyen de sortir de cette situation, très délicat (et très inhabituel, sera dans l'article). Mais la façon de penser du créateur de ces classes est tout de même très intéressante.

 
Dmitry Fedoseev:

Faux. L'indicateur lui-même se dessine dans la sous-fenêtre, mais le panneau doit être créé sur le graphique des prix. Il n'y a pas de réaction au paramètre subwin. A en juger par le code dans Dialog.mqh, il ne devrait pas :

bool CAppDialog::CreateIndicator(const int x1,const int y1,const int x2,const int y2)
  {
   int width=m_chart.WidthInPixels();
//--- geometry for the minimized state
   m_min_rect.LeftTop(0,0);
   m_min_rect.Width(width);
   m_min_rect.Height(CONTROLS_DIALOG_MINIMIZE_HEIGHT-2*CONTROLS_BORDER_WIDTH);
//--- determine subwindow
   m_subwin=ChartWindowFind();

J'ai déjà trouvé un moyen de sortir de cette situation, très délicat (et très inhabituel, sera dans l'article). Mais la façon de penser du créateur de ces classes est tout de même très intéressante.

Je ne l'ai pas fait - si l'indicateur crée un panneau basé sur les classes de création de dialogues et de panneaux, il le fait dans sa propre fenêtre. Il y a probablement aussi un lien pour recevoir des événements.
 

Un autre problème a été découvert. Je crée un panneau à partir de l'indicateur sur le graphique des prix, et s'il y a un indicateur dans la sous-fenêtre sur le graphique, le panneau se bloque.

Un cadeau de l'enfer, pas des classes pour créer des panneaux et des dialogues.

 

A quoi doit ressembler l'interface graphique ? Quels contrôles envisagez-vous d'utiliser ? Je peux aider à faire une interface graphique pour tous les articles où vous en avez besoin, en utilisant ma version.

Voici la dernière version (build 4) de la bibliothèque :Graphic Interfaces X : Standard Graphics Element (build 4)

Si vous êtes intéressés, nous continuerons en privé.

 
Anatoli Kazharski:

A quoi doit ressembler l'interface graphique ? Quels contrôles envisagez-vous d'utiliser ? Je peux aider à faire une interface graphique pour tous les articles où vous en avez besoin, en utilisant ma version.

Voici la dernière version (build 4) de la bibliothèque :Graphic Interfaces X : Standard Graphics Element (build 4)

Si vous êtes intéressés, nous continuerons en privé.

Je ne sais pas ce que ça devrait être. En regardant ici le nombre de sujets avec GUI, je me suis dit que Roche avait peut-être décidé de populariser les classes standard pour créer des panneaux et des boîtes de dialogue. Ils ne devraient pas être popularisés, ils devraient être oubliés à jamais.

S'il n'y a pas d'exigences particulières pour les articles sur la création d'interfaces graphiques (j'espère que Roche y répondra à un moment donné), je peux créer quelque chose moi-même. Je peux aussi lire vos articles moi-même. Mais je n'ai pas l'habitude de rejeter mes problèmes sur quelqu'un d'autre.

 
Dmitry Fedoseev:

...

Je peux lire vos articles moi-même. C'est juste que je n'ai pas l'habitude de rejeter mes problèmes sur quelqu'un d'autre.

Ce n'est pas compliqué. Je veux dire, ça ne prendrait pas beaucoup de mon temps. En plus, c'est intéressant pour moi.

Juste une minute et le modèle d'indicateur sur la question dans ce fil est prêt :

//---

L'archive avec les fichiers est dans le trailer.

Dossiers :
Test.zip  3 kb
 
Anatoli Kazharski:

Ce n'est pas difficile là-bas. Je veux dire, ça ne prendrait pas beaucoup de temps.

En une minute à peine, le modèle d'indicateur pour la question posée dans ce fil de discussion est prêt :

//---

Une archive avec des fichiers dans la remorque.

Anatoly, n'avez-vous pas discuté avec MQ de l'ajout de vos classes à la bibliothèque standard? Vous avez fait un si bon travail + articles, tout est beau, alors que la bibliothèque standard ne brille pas avec.

Ou le feriez-vous comme une alternative...

 
Alexey Kozitsyn:

Anatoly, n'avez-vous toujours pas discuté avec MQ de l'ajout de vos classes à la bibliothèque standard? Vous avez fait tellement de travail + articles - tout est beau, et la bibliothèque standard ne brille pas avec.

Ou le feriez-vous comme une alternative...

Vous en avez déjà un comme alternative. Mais pour l'inclure dans la bibliothèque standard, il y a beaucoup à faire. Je ne voudrais pas sortir un produit à moitié cuit. Au stade actuel de la mise en œuvre, je ne suis pas d'accord, même si tout le monde dit oui.
 
Anatoli Kazharski:

Ce n'est pas difficile là-bas. Je veux dire, ça ne prendrait pas beaucoup de mon temps. En plus, c'est intéressant pour moi.

En une minute, le modèle d'indicateur pour la question posée dans ce fil de discussion est prêt :

//---

L'archive avec les fichiers est dans le trailer.

Bon, d'accord, je vais me renseigner. Mais dans quelques jours. Besoin de se reposer un moment, surchauffe. Oui, et j'aimerais obtenir une réponse de Roche sur les exigences de l'interface graphique.

Mais, si vous le voulez bien, montrez-moi un modèle avec une fenêtre, comme sur l'image ci-dessus, avec deux champs de saisie avec des spins, deux listes déroulantes et un bouton. Naturellement, les événements doivent être gérés, et un exemple de code sur la façon de redimensionner la fenêtre serait également bienvenu.

Le point principal de ma tâche est que je dois modifier à la volée un ensemble de contrôles sur le formulaire.
Raison: