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

 
Slawa:

Quels sont les symptômes ?

Dimitri a besoin que l'interface graphique de l 'indicateur, qui se trouve dans une sous-fenêtre (indicator_separate_window), soit créée dans la fenêtre principale du graphique.
 
Dmitry Fedoseev:
Alors

Bref, j'ai aussi un petit problème. ) Ce mode, c'est-à-dire"indicateur dans une sous-fenêtre et son interface graphique dans la fenêtre principale du graphique", n'avait pas été testé dans ma bibliothèque auparavant et maintenant il y a un petit bug qui rendait impossible la suppression de l'indicateur en appuyant sur le bouton de fermeture et aussi il y a un conflit dans la détermination du numéro de sous-fenêtre après avoir placé/supprimé d'autres indicateurs dans des sous-fenêtres, ce qui a conduit à un traitement incorrect des événements dans certains cas.

Je vais affiner la bibliothèque pour ce mode, mais un peu plus tard et cela sera disponible dans une prochaine version. Cela prendra un certain temps, car nous devons tout tester soigneusement dans différentes situations.

Comme alternative, je peux suggérer ce qui suit à partir de ce qui a déjà été testé et fonctionne. Vous pouvez placer le panneau d'indicateurs dans la sous-fenêtre des indicateurs de différentes manières. Il existe plusieurs modes dans lesquels vous pouvez réduire le panneau (1) en même temps que la sous-fenêtre de l'indicateur, ou (2) uniquement le panneau sans toucher la sous-fenêtre de l'indicateur, comme le montrent les captures d'écran ci-dessous. La sous-fenêtre peut être (1) de hauteur fixe ou (2) libre d'être redimensionnée manuellement. Mais même dans ce cas, il y a une limite. Il ne peut y avoir qu'une seule application MQL avec interface graphique sur le graphe. Sinon, il y aura des conflits.

//---

Si les options proposées conviennent, je préparerai des modèles. Si ce n'est pas le cas, alors, malheureusement, je ne peux pas vous aider.

Les fichiers pour les tests sont dans l'archive :

Dossiers :
Test.zip  8 kb
 
Slawa:

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 ça n'affecte pas l'opération. Tous les boutons ont été pressés correctement.

La seule chose qui distingue SimplePanel2 de SimplePanel est la propriété indicator_chart_window

J'ai essayé de refaire un SimplePanel pour la fenêtre du graphique, cela fonctionne aussi très bien. Les deux fonctionnent, dans la sous-fenêtre et sur le graphique et lorsque la sous-fenêtre est un indicateur normal. Mais lorsque j'utilise à la fois SimplePanel (sur le graphique des prix et dans une sous-fenêtre), puis lorsque j'exécute un indicateur standard dans une sous-fenêtre, le panneau qui se trouve sur le graphique des prix se bloque - la fenêtre est réduite, lorsque j'essaie de l'agrandir, elle se déploie pendant un moment puis se réduit à nouveau.

Le mien se bloque lorsqu'il ajoute un indicateur standard à la sous-fenêtre. Voici le code du fichier inclus :

#include <Controls\Dialog.mqh>
#include <Controls\Edit.mqh>
#include <Controls\ComboBox.mqh>
#include <Controls\Label.mqh>

#define INDENT 11
#define LINE   20

class CPanTest:public CAppDialog{
   protected:
      CComboBox         m_cmb_main;
      CEdit             m_edit1;
      void OnMainEvent(){
      }    
      void OnControlEvent(){
      }        
   public:
      bool Create(){
         if(!CAppDialog::Create(0,"name",0,20,20,200,300)){
            return(false);  
         }
         return(true);    
      }  
      bool OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
};

EVENT_MAP_BEGIN(CPanTest)
   ON_EVENT(ON_CHANGE,m_cmb_main,OnMainEvent)
   ON_EVENT(ON_END_EDIT,m_edit1,OnControlEvent)
EVENT_MAP_END(CAppDialog)

Indicateur :

#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots   0

#include <CPanTest.mqh>

CPanTest * pan;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit(){
   pan=new CPanTest();
   if(!pan.Create()){  
      return(INIT_FAILED);
   }
   if(!pan.Run()){
     return(INIT_FAILED);  
   }  
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason){
   pan.Destroy();
   delete(pan);
}  

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   return(rates_total);
}

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   pan.ChartEvent(id,lparam,dparam,sparam);
}
 
Anatoli Kazharski:

Bref, j'ai aussi un petit problème. ) Ce mode, c'est-à-dire"indicateur dans une sous-fenêtre et son interface graphique dans la fenêtre principale du graphique", n'avait pas été testé dans ma bibliothèque auparavant et maintenant il y a un petit bug qui rendait impossible la suppression de l'indicateur en appuyant sur le bouton de fermeture et aussi il y a un conflit dans la détermination du numéro de sous-fenêtre après avoir placé/supprimé d'autres indicateurs dans des sous-fenêtres, ce qui a conduit à un traitement incorrect des événements dans certains cas.

Je vais affiner la bibliothèque pour ce mode, mais un peu plus tard et cela sera disponible dans une prochaine version. Cela prendra un certain temps, car nous devons tout tester soigneusement dans différentes situations.

Comme alternative, je peux suggérer ce qui suit à partir de ce qui a déjà été testé et fonctionne. Vous pouvez placer le panneau d'indicateurs dans la sous-fenêtre des indicateurs de différentes manières. Il existe plusieurs modes dans lesquels vous pouvez réduire le panneau (1) en même temps que la sous-fenêtre de l'indicateur, ou (2) uniquement le panneau sans toucher la sous-fenêtre de l'indicateur, comme le montrent les captures d'écran ci-dessous. La sous-fenêtre peut être (1) de hauteur fixe ou (2) libre d'être redimensionnée manuellement. Mais même dans ce cas, il y a une limite. Il ne peut y avoir qu'une seule application MQL avec interface graphique sur le graphe. Sinon, il y aura des conflits.

//---

Si les options proposées conviennent, je préparerai des modèles. Si ce n'est pas le cas, alors, malheureusement, je ne peux pas vous aider.

Les fichiers pour les tests sont dans l'archive :

Que ce soit dans le podoc. Il doit s'accrocher librement dans la sous-fenêtre, s'effondrer indépendamment de la sous-fenêtre, et la sous-fenêtre peut être mise à l'échelle.
 
Dmitry Fedoseev:
Que ce soit en sous-fenêtre. La sous-fenêtre doit s'accrocher librement dans la sous-fenêtre, s'effondrer indépendamment de la sous-fenêtre, et la sous-fenêtre doit être évolutive.

Il y a un fichier modèle dans l'archive. Si vous avez des questions, j'y répondrai.

Dossiers :
Test.zip  4 kb
 
Anatoli Kazharski:

Il y a un fichier modèle dans l'archive. Si vous avez des questions, j'y répondrai.

Il y a eu un malentendu :

 
Dmitry Fedoseev:

Il y a eu un malentendu :

Oh, j'ai déjà commencé les changements pour la prochaine version. Je les rendrai toutes pareilles. )

Corrigé pour la version du dernier article. Encore un essai.

Dossiers :
Test.zip  4 kb
 
Anatoli Kazharski:

Oh, j'ai déjà commencé les changements pour la prochaine version. Ramener tout à la même chose. )

Corrigé pour la version du dernier article. Encore un essai.

Eh... un peu plus... Maintenant beaucoup d'erreurs sur les ressources manquantes.
 
Dmitry Fedoseev:
Eh... un peu plus... Maintenant, il y a beaucoup d'erreurs concernant les ressources manquantes.
Toutes les ressources utilisées dans la bibliothèque sont jointes au dernier article de la série. Quels sont les messages du journal ?
 
Anatoli Kazharski:
Toutes les ressources utilisées dans la bibliothèque sont jointes au dernier article de la série. Quels sont les messages du journal de bord ?
Messages sur les ressources manquantes.