Classi per creare pannelli e dialoghi - pagina 3

 
Slawa:

Quali sono i sintomi?

Dimitri ha bisogno che l 'interfaccia grafica dell'indicatore, che è in una sottofinestra (indicator_separate_window), sia creata nella finestra principale del grafico.
 
Dmitry Fedoseev:
Così

Comunque, anch'io ho un piccolo problema. ) Questa modalità, cioè"indicatore in una sottofinestra e la sua interfaccia grafica nella finestra principale del grafico", non era stata testata prima nella mia libreria e ora c'è un piccolo bug che rendeva impossibile cancellare l'indicatore premendo il pulsante di chiusura e inoltre c'è un conflitto nel determinare il numero della sottofinestra dopo aver posizionato/cancellato altri indicatori nelle sottofinestre, che ha portato a una gestione errata degli eventi in alcuni casi.

Raffinerò la libreria per questa modalità, ma un po' più tardi e questo sarà disponibile in una versione futura. Questo richiederà un po' di tempo, poiché dobbiamo testare attentamente tutto in diverse situazioni.

Come alternativa posso suggerire quanto segue da ciò che è già stato testato e funziona. Puoi posizionare il pannello degli indicatori nella sottofinestra degli indicatori in vari modi. Ci sono diversi modi in cui puoi minimizzare il pannello (1) insieme alla sottofinestra dell'indicatore, o (2) solo il pannello senza toccare la sottofinestra dell'indicatore, come mostrato negli screenshot qui sotto. La sottofinestra può essere (1) ad altezza fissa o (2) libera di essere ridimensionata manualmente. Ma anche in questo caso c'è una limitazione. Ci può essere solo un'applicazione MQL con interfaccia grafica sul grafico. Altrimenti, ci saranno dei conflitti.

//---

Se le opzioni suggerite sono adatte, preparerò dei modelli. Se no, allora, sfortunatamente, non posso aiutarti in questo.

I file per i test sono nell'archivio:

File:
Test.zip  8 kb
 
Slawa:

Non c'è niente che non va. Quali sono i sintomi?

L'ho appena provato. Prima l'indicatore nella sottofinestra. Poi il pannello sul grafico. Poi un pannello simile nella sottofinestra. L'unica cosa che ho visto è SimplePanel2 nella prima sottofinestra. Ma non influisce sul funzionamento. Tutti i pulsanti sono stati premuti correttamente.

L'unica cosa che distingue SimplePanel2 da SimplePanel è la proprietà indicator_chart_window

Ho provato a rifare SimplePanel per la finestra del grafico, anche questo funziona bene. Entrambi funzionano, nella sottofinestra e sul grafico e quando la sottofinestra è un indicatore normale. Ma quando entrambi i SimplePanel (sul grafico dei prezzi e in una sottofinestra), poi quando eseguo un indicatore standard in una sottofinestra, il pannello che è sul grafico dei prezzi si blocca - la finestra è minimizzata, quando provo ad espanderla, si apre per un momento e poi si minimizza di nuovo.

Il mio si blocca quando si aggiunge un indicatore standard alla sottofinestra. Ecco il codice del file incluso:

#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)

Indicatore:

#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:

Comunque, anch'io ho un piccolo problema. ) Questa modalità, cioè"indicatore in una sottofinestra e la sua interfaccia grafica nella finestra principale del grafico", non era stata testata prima nella mia libreria e ora c'è un piccolo bug che rendeva impossibile cancellare l'indicatore premendo il pulsante di chiusura e inoltre c'è un conflitto nel determinare il numero della sottofinestra dopo aver posizionato/cancellato altri indicatori nelle sottofinestre, che ha portato a una gestione errata degli eventi in alcuni casi.

Raffinerò la libreria per questa modalità, ma un po' più tardi e questo sarà disponibile in una versione futura. Questo richiederà un po' di tempo, poiché dobbiamo testare attentamente tutto in diverse situazioni.

Come alternativa posso suggerire quanto segue da ciò che è già stato testato e funziona. Potete posizionare la barra dell'indicatore nella sottofinestra dell'indicatore in vari modi. Ci sono diversi modi in cui puoi minimizzare il pannello (1) insieme alla sottofinestra dell'indicatore, o (2) solo il pannello senza toccare la sottofinestra dell'indicatore, come mostrato negli screenshot qui sotto. La sottofinestra può essere (1) ad altezza fissa o (2) libera di essere ridimensionata manualmente. Ma anche in questo caso c'è una limitazione. Ci può essere solo un'applicazione MQL con interfaccia grafica sul grafico. Altrimenti, ci saranno dei conflitti.

//---

Se le opzioni suggerite sono adatte, preparerò dei modelli. Se no, allora, sfortunatamente, non posso aiutarti in questo.

I file per i test sono nell'archivio:

Che sia nel podoc. Dovrebbe essere appeso liberamente nella sottofinestra, collassare indipendentemente dalla sottofinestra, e la sottofinestra può essere scalata.
 
Dmitry Fedoseev:
Che sia in sottofinestra. La sottofinestra dovrebbe appendersi liberamente nella sottofinestra, collassare indipendentemente dalla sottofinestra, e la sottofinestra dovrebbe essere scalabile.

C'è un file modello nell'archivio. Se avete delle domande, vi risponderò.

File:
Test.zip  4 kb
 
Anatoli Kazharski:

C'è un file modello nell'archivio. Se avete delle domande, vi risponderò.

C'è stata una confusione:

 
Dmitry Fedoseev:

C'è stata una confusione:

Oh, ho già in corso i cambiamenti per la prossima versione. Li farò tutti uguali. )

Corretto per la versione dell'ultimo articolo. Un altro tentativo.

File:
Test.zip  4 kb
 
Anatoli Kazharski:

Oh, ho già in corso i cambiamenti per la prossima versione. Riportare tutto allo stesso modo. )

Corretto per la versione dell'ultimo articolo. Un altro tentativo.

Eh... un po' di più... Ora un sacco di errori sulle risorse mancanti.
 
Dmitry Fedoseev:
Eh... un po' di più... Ora ci sono molti errori sulle risorse mancanti.
Tutte le risorse utilizzate nella biblioteca sono allegate all'ultimo articolo della serie. Quali sono i messaggi di log?
 
Anatoli Kazharski:
Tutte le risorse utilizzate nella biblioteca sono allegate all'ultimo articolo della serie. Quali sono i messaggi del diario di bordo?
Messaggi sulle risorse mancanti.