Librerías: EasyAndFastGUI - librería para crear interfaces gráficas - página 18

 
Marco vd Heijden:

Al principio se desarrolló en MQL4 y MQL5 pero los últimos ejemplos son para MQL5.

Esto no significa que no se puede hacer para trabajar en MQL4.

El código por lo general necesita unos pequeños ajustes.

Me esforcé por modificarlo, pero fracasé. los complejos archivos .mqh de MT5 me frustraban, ¡tantas variables y objetos!

 
17334708:

me esforcé por modificarlo, pero fracasé. los complejos archivos .mqh de MT5 me frustraron, ¡tantas variables y objetos!

Sí, implica un poco de trabajo la mejor manera es cambiar el nombre de las variables de bucle, por ejemplo, cuando se obtiene una advertencia acerca de la variable i entonces usted puede cambiar el nombre de i a i1 en ese bucle y en el siguiente bucle i2 y i3 y así sucesivamente.

Además, no es necesario hacer toda la biblioteca, puede tomar sólo el elemento que necesita y convertir sólo eso, porque los artículos se ocupan de una gran cantidad de elementos y objetos.

 
Pero bastantes elementos están relacionados. Modificar el bucle o las variables se convierte en un trabajo sobrecargado fantástico. gracias por su amable ayuda.
 
Sólo si lo quieres todo, no si sólo quieres un elemento.
 
¿Podría utilizarse esta biblioteca en MQL4?
 
Lo que he hecho:
Un panel que tiene varios comboboxes y campos de entrada de números. Hay un cuadro combinado principal, del que dependen los demás campos

Cómo debería funcionar:
cuando el valor del combobox principal cambia, los otros campos de entrada y comboboxes: algo se oculta, algo aparece, algo cambia su ubicación (X,Y)

Que formas he probado:
1) - al volver a seleccionar el valor en el cuadro combinado principal - se borran todos los elementos innecesarios (Delete()), y luego se vuelven a crear (Create...()). El resultado - al hacer clic en un elemento del cuadro combinado redibujado, se produce un array fuera de rango al acceder al array de elementos del formulario. Intenté "endurecer" el error y añadí una comprobación del tamaño del array en el lugar del error (para que el bucle no se vea forzado a ir más allá del array), ahora cuando llega aquí, el formulario simplemente "se cuelga".

2) - probado el método 1), pero al mismo tiempo añadido a la función WndContainer, que está escrito en este hilo, al principio de "DeleteElementsFromArray" - la situación no ha cambiado.

3) - He intentado dibujar todos los elementos con los mismos valores X,Y (todos los elementos en un punto), luego inmediatamente ocultarlos (Hide()), luego si es necesario cambiar su X,Y (XGap(...), YGap(...)) y dibujarlos (Update(true); Show()). - Aquí hay otro problema - algunos de los elementos no se ocultan después de ocultar, y la otra parte - pierde su LabelText (es sólo visualmente ausente).


¿Qué me aconseja?
 
Mikhail Mitin:

añadido a WndContainer la función, que está escrito en este hilo, al principio de "DeleteElementsFromArray" - la situación no ha cambiado


Escribí eso para elementos simples. Combobox no es simple ) La versión actual debería borrar los complejos, pero aún no lo he probado, creo, y necesito cambiar muchas cosas ahí).

Y para ocultar añadí la propiedad m_is_hiden a los elementos y en CWndEvents::Show(const uint window_index); los elementos con true se saltan.

 

Hola chicos,

El desarrollo de código de negocios que hace uso de paneles de elementos gráficos es una cosa y esta biblioteca es muy útil. Sin embargo, cuando se trata de bajo rendimiento o errores que necesitan ser reproducidos,

casi no hay manera de evitar el Probador de Estrategias.

Dicho esto, tratar de arreglar las cosas en un gráfico en vivo es extremadamente tedioso (por ejemplo, esperar hasta que se cumplan ciertas condiciones para que pueda hacer clic en los elementos gráficos ... gah)

¡Sería más que útil si pudiéramos probar cosas dentro del ST!


1. ¿Ha hablado el equipo de desarrollo de MetaTrader en algún lugar del foro acerca de por qué no se activa el void OnChartEvent en el ST?

2. ¿Hay alguna posibilidad de establecer una solución?


Saludos,
Marcel

 

La macro del archivo Defines.mqh

#define  TO_STRING(A) #A

no es compatible con Alglib {ap.mqh)

class CSerializer
  {
   //--- enumeración
   enum SMODE { DEFAULT,ALLOC,TO_STRING,FROM_STRING };

He tenido que cambiarle el nombre.

 

Después de instalar la actualización de la plataforma en 2132, aparecieron errores de compilación:

  • 'WndEvents.mqh' - 'CWndContainer::~CWndContainer' - no se puede acceder a la función miembro protegida WndEvents.mqh 11 27
  • CWndEvents::~CWndEvents' - no se puede acceder a la función miembro protegida WndCreate.mqh 10 27


Como arreglar:

  • en el fichero "WndContainer.mqh" en el constructor y destructor de "CWndContainer" sustituir "protected" por "public"
  • en el archivo "WndEvents.mqh" sustituir "protected" por "public" en el constructor y destructor del archivo "CWndCreate
  • en el archivo "WndCreate.mqh" sustituya "protected" por "public" en el constructor y el destructor de "CWndCreate".