Clases para crear paneles y diálogos - página 3

 
Slawa:

¿Cuáles son los síntomas?

Dimitri necesita que la GUI del indicador, que está en una subventana (indicator_separate_window), se cree en la ventana principal del gráfico.
 
Dmitry Fedoseev:
Así que

De todos modos, yo también tengo un pequeño problema. ) Este modo, es decir,"indicador en una subventana y su GUI en la ventana del gráfico principal", no había sido probado antes en mi biblioteca y ahora hay un pequeño error que hacía imposible eliminar el indicador pulsando el botón de cierre y también hay un conflicto en la determinación del número de subventana después de colocar/eliminar otros indicadores en subventanas, lo que llevaba a un manejo incorrecto de los eventos en algunos casos.

Voy a perfeccionar la biblioteca para este modo, pero un poco más tarde y esto estará disponible en una futura versión. Esto llevará algún tiempo, ya que tenemos que probar cuidadosamente todo en diferentes situaciones.

Como alternativa puedo sugerir lo siguiente de lo que ya se ha probado y funciona. Puede colocar la barra de indicadores en la subventana de indicadores de varias maneras. Hay varios modos en los que se puede minimizar el panel (1) junto con la subventana del indicador, o (2) sólo el panel sin tocar la subventana del indicador, como se muestra en las capturas de pantalla siguientes. La subventana puede ser (1) de altura fija o (2) de tamaño libre para ser redimensionada manualmente. Pero incluso en este caso hay una limitación. Sólo puede haber una aplicación MQL con interfaz gráfica en el gráfico. De lo contrario, habrá conflictos.

//---

Si las opciones sugeridas son adecuadas, prepararé plantillas. Si no es así, desgraciadamente no puedo ayudarte con eso.

Los archivos para las pruebas están en el archivo:

Archivos adjuntos:
Test.zip  8 kb
 
Slawa:

No hay ningún fallo. ¿Cuáles son los síntomas?

Acabo de probarlo. Primero el indicador en la subventana. A continuación, el panel del gráfico. A continuación, un panel similar en la subventana. Lo único que vi fue el SimplePanel2 en la primera subventana. Pero no afecta a la operación. Todos los botones presionados correctamente.

Lo único que distingue a SimplePanel2 de SimplePanel es la propiedad indicator_chart_window

Intenté rehacer el SimplePanel para la ventana del gráfico, también funciona bien. Ambos funcionan, en la subventana y en el gráfico y cuando la subventana es un indicador normal. Pero cuando ambos SimplePanel (en el gráfico de precios y en una subventana), luego cuando ejecuto un indicador estándar en una subventana, el panel que está en el gráfico de precios falla - la ventana se minimiza, cuando trato de expandirla, se despliega por un momento y luego se minimiza de nuevo.

El mío falla al añadir un indicador estándar a la subventana. Aquí está el código del archivo incluido:

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

Indicador:

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

De todos modos, yo también tengo un pequeño problema. ) Este modo, es decir,"indicador en una subventana y su GUI en la ventana del gráfico principal", no había sido probado antes en mi biblioteca y ahora hay un pequeño error que hacía imposible eliminar el indicador pulsando el botón de cierre y también hay un conflicto en la determinación del número de subventana después de colocar/eliminar otros indicadores en subventanas, lo que llevaba a un manejo incorrecto de los eventos en algunos casos.

Voy a perfeccionar la biblioteca para este modo, pero un poco más tarde y esto estará disponible en una futura versión. Esto llevará algún tiempo, ya que tenemos que probar cuidadosamente todo en diferentes situaciones.

Como alternativa puedo sugerir lo siguiente de lo que ya se ha probado y funciona. Puede colocar el panel de indicadores en la subventana de indicadores de varias maneras. Hay varios modos en los que se puede minimizar el panel (1) junto con la subventana del indicador, o (2) sólo el panel sin tocar la subventana del indicador, como se muestra en las capturas de pantalla siguientes. La subventana puede ser (1) de altura fija o (2) de tamaño libre para ser redimensionada manualmente. Pero incluso en este caso hay una limitación. Sólo puede haber una aplicación MQL con interfaz gráfica en el gráfico. De lo contrario, habrá conflictos.

//---

Si las opciones sugeridas son adecuadas, prepararé plantillas. Si no es así, desgraciadamente no puedo ayudarte con eso.

Los archivos para las pruebas están en el archivo:

Que sea en el podoc. Debe colgar libremente en la subventana, colapsar independientemente de la subventana, y la subventana puede ser escalada.
 
Dmitry Fedoseev:
Que sea en subventana. La subventana debe colgar libremente en la subventana, colapsar independientemente de la subventana, y la subventana debe ser escalable.

Hay un archivo de plantilla en el archivo. Si tienes alguna pregunta, la responderé.

Archivos adjuntos:
Test.zip  4 kb
 
Anatoli Kazharski:

Hay un archivo de plantilla en el archivo. Si tienes alguna pregunta, la responderé.

Ha habido una confusión:

 
Dmitry Fedoseev:

Ha habido una confusión:

Ya tengo en marcha los cambios para la próxima versión. Los haré todos iguales. )

Corregido para la versión del último artículo. Un intento más.

Archivos adjuntos:
Test.zip  4 kb
 
Anatoli Kazharski:

Ya tengo en marcha los cambios para la próxima versión. Volviendo todo a lo mismo. )

Corregido para la versión del último artículo. Un intento más.

Eh... algo más... Ahora un montón de errores sobre la falta de recursos.
 
Dmitry Fedoseev:
Eh... algo más... Ahora hay muchos errores sobre la falta de recursos.
Todos los recursos utilizados en la biblioteca se adjuntan al último artículo de la serie. ¿Qué son los mensajes de registro?
 
Anatoli Kazharski:
Todos los recursos utilizados en la biblioteca se adjuntan al último artículo de la serie. ¿Cuáles son los mensajes del cuaderno de bitácora?
Mensajes sobre la falta de recursos.
Razón de la queja: