Discusión sobre el artículo "Cómo crear un panel gráfico de cualquier nivel de complejidad" - página 13

 

¡Hola!

¿Podría decirme por qué su panel funciona bien en un gráfico real, pero no funciona en el probador de estrategias?

Es decir, los eventos de pulsación de botones, por ejemplo, no se procesan.

¿Cómo puedo solucionarlo?

Gracias de antemano.

 
El panel es mejor utilizar de otro idioma en mt5 dependerá puramente de la terminal y elgráfico
 
Vitaliy Davydov probador de estrategias?

Es decir, no se procesan los eventos de pulsación de botones, por ejemplo.

¿Cómo puedo solucionarlo?

Gracias de antemano.

He publicado una solución de trabajo con los botones de un par de años atrás. Pero Editar campos no funcionan en MT5 probador. Aunque usted puede agregar pequeños + / - botones al lado del campo Editar y editar a través de ellos. Pero habrá sus propios matices.
 
ON_MOUSE_FOCUS_KILL no parece ser utilizado de ninguna manera. No pasa nada cuando lo añades a Map. También puedes comentar ON_MOUSE_FOCUS_KILL y el compilador lo omitirá.
 

¡Hola!

Creo un panel heredado de CDialog (o de CWndContainer, no hay diferencia).

Si creo un panel en la ventana principal del gráfico, todo funciona - el panel se mueve con el ratón y se cierra con el botón cerrar.

Si creo un panel en una subventana, entonces nada funciona - el panel está inmóvil y no reacciona al botón de cerrar.

Pregunta - ¿cómo hacer que el panel reaccione normalmente a los eventos del gráfico en la subventana?

 

Hola, me las arreglé para hacer mi panel con éxito. Muchas gracias por su increíble tutorial.

 
Vasiliy Pushkaryov #:
Hace un par de años he publicado una solución de trabajo con los botones. Pero los campos de edición no funcionan en MT5 tester. Aunque se pueden añadir pequeños botones +/- al lado del campo Editar y editar a través de ellos. Pero habrá sus propios matices.

¡Buenas tardes!

Gracias, lo he solucionado.

Ahora otros problemas - todos estos paneles de la biblioteca estándar,

son absolutamente no funcionales en MT4 tester en el modo de visualización de prueba.

¿Hay alguna solución global a este problema, para que no tenga que bailar con pandereta para cada control?

 
Vitaliy Davydov #:

¡Buenas tardes!

Gracias, lo tengo solucionado.

Ahora otros problemas - todos estos paneles son de la biblioteca estándar,

son absolutamente no funcionales en el probador MT4 en el modo de visualización de prueba.

Hay alguna solución global a este problema, para no tener que bailar con pandereta para cada control?

¿Qué quiere decir no funcional? En mi tester de MT4 cumplen sus funciones.

Puse un ejemplo cuando heredé de CButton y añadí la función cMyButton::isButtonPushed() para que funcionara con el tester.

Hice lo mismo para CEdit, CCheckBox y luego siempre uso mis herederos. Este es un trabajo de una sola vez.

En el archivo TestPush había una función de ejemplo checkPushingButtons():

void OnTick()
{
    if(MQLInfoInteger(MQL_VISUAL_MODE)) ExtDialog.checkPushingButttons();
}

//+------------------------------------------------------------------------------------------------------------------+
//| Para el comprobador y OnTick. Comprobemos si el botón (u objeto) está pulsado
//+------------------------------------------------------------------------------------------------------------------+
void CAppWindowCorrectMinimization::checkPushingButttons()
{
   if(m_button1.isButtonPushed())    print1();
   if(m_button2.isButtonPushed())    print2();
}


Aquí está de mi código de trabajo:

//+------------------------------------------------------------------------------------------------------------------+
//| Para el comprobador y OnTick. Comprobemos si el botón (u objeto) está pulsado
//+------------------------------------------------------------------------------------------------------------------+
void cInterface::checkPushingButttons()
{
  if(btnOnOff.isButtonPushed())    OnClickOnOff();
  if(btnLong.isButtonPushed())     OnClickLong();
  if(btnShort.isButtonPushed())    OnClickShort();

  if(btnCloseOff.isButtonPushed()) OnClickCloseOff();
  if(btnProtocol.isButtonPushed()) OnClickProtocol();
  if(btnOpposMA6.isButtonPushed()) OnClickOpposMA6();

  if(editMA2plus.isEditChanged())  OnEditMA2plus();
  if(editPunct.isEditChanged())    OnEditPuncture();

Es decir, al final la diferencia con trabajar sin tester y con tester se reduce a añadir una única función checkPushingButttons(), donde añadimos una cadena a cada control, y comprobamos mediante tick si es un push o un input.

Prepara plantillas, hazlo un par de veces, creo, luego te acostumbrarás.

 

Hola Vladimir,
en primer lugar también me gustaría darle las gracias por su gran tutorial. He encontrado un problema en su uso en una plantilla: Basta con poner cualquiera de sus aplicaciones en una plantilla de un gráfico vacío. Después de cargar esta plantilla la aplicación aparecerá dos veces como se muestra en la imagen. ¿Tiene alguna idea de cómo solucionar esto?

Gracias de antemano

Archivos adjuntos:
 

¿Por qué no se puede arrastrar/mover el panel/ventana más allá de los límites del gráfico?

¿Cuál es la diferencia con la biblioteca easyfastgui de Anatoli?