Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Pyotr, no te entiendo.
No has respondido a las preguntas. Es importante para los programadores saber como interactuar con tu GUI mientras trabajas. Aquí hay un ejemplo de mi GUI. Hice clic en el acceso directo del tema claro/oscuro y este evento activó inmediatamente la función para cambiar los colores de fondo y las líneas. ¿Cómo se hace esta interacción?
¿Qué significa "El usuario NO interactuará (en absoluto) con mi código" ? El programador necesita interactuar no con el código, sino con los eventos que el código debe generar.
Bien. Intentaré usar sólo imágenes para mayor claridad.
1.
2.
3.
4.
Nuestra hoja de opciones y la casilla de verificación en la ventana y el archivo Internal_API:
5. Realización de acciones sobre la ventana y los elementos en el código de usuario:
6.
¡¡¡INTELLISENSE NOS LO DICE TODO!!!
Intentaré hacer una pregunta diferente. Usando el desarrollo web como ejemplo. Porque tu GUI está escrita usando el lenguaje de marcas que has creado.
El desarrollo web también tiene su propio lenguaje de marcado (HTML) y lenguaje de estilo (CSS). Si has creado un sitio web sólo en HTML, puedes crear controles en html puro.
Aquí hay un ejemplo con checkbox. Pero en este caso el sitio estará muerto, porque no pasará nada cuando los controles estén trabajando. Para hacer que algo pase, necesitas poner un manejador para cada evento usando JavaScript y la función addEventListener Aquí hay un ejemplo de tal manejador:https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_element_addeventlistener4 Mi pregunta principal puede ser reformulada: ¿Cómo implementaspara el programador el manejador de eventos generado por GUI cuando el usuario trabaja.
Es decir, ¿cuál es su análogo de addEventListener ? Como he dicho, lo tengo implementado a través del hecho de que cuando la GUI se genera programáticamente, a cada control se le asigna su propia función manejadora de eventos utilizando unpuntero a una función.
DE ACUERDO.
Intentaré hacer una pregunta diferente. Usando el desarrollo web como ejemplo. Porque tu GUI está escrita usando el lenguaje de marcas que has creado.
El desarrollo web también tiene su propio lenguaje de marcado (HTML) y lenguaje de estilo (CSS). Si has creado un sitio web sólo en HTML, puedes crear controles en html puro.
Aquí hay un ejemplo con checkbox. Pero en este caso el sitio estará muerto, porque no pasará nada cuando los controles estén trabajando. Para hacer que algo pase, necesitas poner un manejador para cada evento usando JavaScript y la función addEventListener Aquí hay un ejemplo de tal manejador:https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_element_addeventlistener4 Mi pregunta principal puede ser reformulada: ¿Cómo implementaspara el programador el manejador de eventos generado por GUI cuando el usuario trabaja.
Es decir, ¿cuál es su análogo a addEventListener ? Como ya he dicho, lo tengo implementado a través del hecho de que cuando la GUI se genera mediante programación, a cada control se le asigna su propia función manejadora de eventos utilizando unpuntero a la función.
Nicolás, todo funciona. Ya lo probarás tú mismo más adelante. Todo es mucho más sencillo de lo que crees. He hecho muchas interfaces que funcionan usando esta tecnología. Así que... Pronto lo verás.
Nikolai, está funcionando. Lo probarás tú mismo más tarde. Es mucho más simple de lo que piensas. He hecho muchas interfaces de trabajo utilizando esta tecnología. Así que... Pronto lo verás.
De acuerdo. Estaré esperando.
Realmente quiero entender su Creación. Sin embargo, para que sea más fácil de entender con un ejemplo, por favor, cree un simple indicador vacío (o Asesor Experto), en el que su GUI está conectado en forma de un botón separado, cuando se pulsa, el color de fondo de la ventana cambia de negro a blanco y de blanco a negro. Sólo es deseable que el cambio de color tenga lugar en el cuerpo del indicador, y no en uno de los archivos conectados.
Porque el programador realmente no debe meterse en su código. Para simplificar la escritura aquí está el código de la función que debe ejecutarse en el cuerpo del programa cuando se pulsa el botón:
De acuerdo. Voy a esperar.
Realmente quiero entender su creación. Sin embargo, para que sea más fácil de entender con un ejemplo, por favor, cree un simple indicador vacío (o Asesor Experto), en el que su GUI está conectado en forma de un botón separado, cuando se pulsa, el color de fondo de la ventana cambia de negro a blanco y de blanco a negro. Sólo es deseable que el cambio de color tenga lugar en el cuerpo del indicador, y no en uno de los archivos conectados.
Porque el programador realmente no debe meterse en su código. Para simplificar la escritura aquí está el código de la función que debe ejecutarse en el cuerpo del programa cuando se pulsa el botón:
Ok. Haré una implementación lo más simple posible para que se entienda. Sin florituras).
De acuerdo. Haré la implementación más sencilla posible para que se entienda. Sin florituras).
Muy bien. Gracias.
Nikolay, no puedo escribir una llamada a una función dentro del cuerpo del indicador, porque su manejador está dentro del archivo Internal_API.mqh.
Es decir, puedo llamar a tu función en el evento de pulsar el botón desde su manejador en este archivo. Sin embargo, puedo establecer los estados del botón programáticamente desde el cuerpo del indicador en el evento del temporizador, por ejemplo. Pero entonces no necesito pulsar el botón. En resumen, hay diferentes elementos. Algunos de ellos pueden ser manejados dentro del cuerpo del indicador (en su mayoría elementos no interactivos, como la barra de progreso, por ejemplo) y hay los que tienen un controlador en el archivo Internal_API.mqh y trabajar desde allí. Aunque sus estados se pueden establecer programáticamente desde el cuerpo del EA/indicador.
Su tarea se ha completado. (si cuadrado blanco - click)
Código:
Comentada tu función porque el compilador maldecía. Lo hice más simple.
Aquí está el código en el archivo Internal_API.mqh
Por cierto, usted debe agregar:
El archivo Internal_API.mqh contiene manejadores de control y esta ESPECIFICAMENTE diseñado para conectarlos.
Este archivo está destinado al usuario y no es parte del motor o cualquiera de mi otro código.
Este archivo está destinado al usuario y no es parte del motor o cualquiera de mi otro código.
Ya veo, Peter.
Gracias. No es conveniente, por supuesto, para un desarrollador.
Hay mucho código y movimientos innecesarios. Aún así, la variante con un puntero a una función es mucho mejor.