Cours pour la création de panneaux et de dialogues - page 2

 
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é une solution, très délicate (et très inhabituelle, 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.

Pour créer un indicateur SimplePanel sur la fenêtre principale du graphique au lieu d'une sous-fenêtre, il suffit d'écrire #property indicator_separate_window au lieu de #property indicator_chart_window.

 
Dmitry Fedoseev:

Bon, d'accord, je vais me renseigner. Mais dans quelques jours. J'ai besoin de repos, je suis en surchauffe. Et j'aimerais avoir une réponse de Roche sur les exigences de l'interface graphique.

Cependant, si vous le voulez bien, montrez-moi un modèle avec une fenêtre, comme sur la photo ci-dessus, avec :

  • deux champs de saisie
  • deux champs de saisie avec des spins
  • deux listes déroulantes
  • 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 de modifier à la volée un ensemble de contrôles sur le formulaire.

Les deux premiers champs de saisie doivent être réservés à la saisie de texte ? Malheureusement, elle ne sera que dans la prochaine version et je ne peux pas encore dire quand elle sera publiée. Le matériel est presque prêt, mais je n'ai pas encore commencé à écrire l'article.

 
Slawa:

Pour créer un indicateur SimplePanel sur la fenêtre principale du graphique au lieu d'une sous-fenêtre, il suffit d'écrire #property indicator_separate_window au lieu de #property indicator_chart_window.

Si, au même moment, il y a un indicateur dans la sous-fenêtre, le panneau se bloque. J'en ai déjà parlé ici.
 
Anatoli Kazharski:

Les deux premiers champs de saisie doivent servir à saisir du texte ? Malheureusement, elle ne sera que dans la prochaine version, et je ne peux pas encore dire quand elle sera publiée. Le matériel est presque prêt, mais je n'ai pas encore commencé à écrire l'article.

Comment cela ? La boîte de saisie est le début du début. Nous avons la boîte de rotation, mais pas le champ de saisie.

En général, vous devriez conduire des paramètres int et plusieurs variantes d'énumérations standard : type de moyenne, prix (pour cela la liste déroulante). Mais seulement si la bibliothèque ne fournit pas l'élémentaire, je ne sais pas. Je ne sais pas si ça en vaut la peine. Je ne sais pas si cela vaut la peine, pour que quelqu'un d'autre se tape la tête contre le mur.

 
Dmitry Fedoseev:

Comment est-ce possible ? La boîte de saisie est le début du début. La SpinBox est là, le champ de saisie ne l'est pas.

En général, vous devriez conduire des paramètres int et plusieurs variantes d'énumérations standard : type de moyenne, prix (pour cela la liste déroulante). Mais seulement si la bibliothèque ne fournit pas l'élémentaire, je ne sais pas. Je ne sais pas si ça en vaut la peine. Pour que quelqu'un d'autre se tape la tête contre le mur après.

C'est comme ça que ça s'est passé. Je n'en ai pas encore eu besoin dans mon développement, mais j'ai récemment reçu une demande de plusieurs utilisateurs pour un champ de saisie de texte.

La bibliothèque se développe. Petit à petit, tout ce dont vous avez besoin sera là. )

 
Dmitry Fedoseev:

...

En général, des paramètres int et quelques options pour l'énumération standard : type de moyenne, prix (pour cela, une liste déroulante).

Et dans le champ de texte, quels sont les paramètres à saisir ?
 
Anatoli Kazharski:
Et dans la zone de texte, quels sont les paramètres à saisir ?
Numéros int
 
Dmitry Fedoseev:
Numéros int

N'est-ce pas ?

//---

P.S. Leschamps de saisie pour les chiffres sont déjà là maintenant. Il s'agit de la classe CSpinEdit. Les champs de saisie de texte, classe CTextEdit, seront disponibles dans la prochaine mise à jour(build 5).

 
Anatoli Kazharski:

N'est-ce pas ?

//---

P.S. Leschamps de saisie pour les chiffres sont déjà là maintenant. Il s'agit de la classe CSpinEdit. Les champs de saisie de texte, classe CTextEdit, seront dans la prochaine mise à jour(build 5).

Alors
 
Dmitry Fedoseev:
S'il y a un indicateur dans la sous-fenêtre, le panneau se bloque. J'en ai déjà parlé ici.

Rien n'est défectueux. Quels sont les symptômes ?

Je viens de l'essayer. D'abord l'indicateur dans la sous-fenêtre. Puis le panneau sur le tableau. Puis un panneau similaire dans la sous-fenêtre. La seule chose que j'ai vue est SimplePanel2 dans la première sous-fenêtre. Mais cela n'affecte pas l'opération. Tous les boutons ont été pressés correctement.

La seule chose qui différencie SimplePanel2 de SimplePanel est la propriété indicator_chart_window.

PS, on parle de cinq ou de quatre ?

Raison: