Preguntas sobre POO en MQL5 - página 15

 
Vasiliy Pushkaryov:

Disculpas por la información errónea, antes escribí que no se puede llamar al método Create() en una clase hija.

Ahora, comprobado de nuevo, se puede. Pero el acceso al miembro privado m_button no estaba disponible. Es decir, era imposible comprobar, por ejemplo, el estado del botón: pulsado/liberado.

Ahora con la pista de Igor es posible.

No hay problemas con los botones allí, no recuerdo, pero esta clase tenía métodos listos ( no campos ) - para determinar el estado, si no, comprobar IsActive() o PropFlags() o StateFlags() - definitivamente había algo listo para averiguar lo que está pasando con el botón ahora

Te diré el segundo hack con gráficos en MQL - puedes encontrar el nombre del botón ( Name()) y por el nombre encontrarlo y obtener el estado vía ObjectGetInteger() y otras funciones, pero para evitar hacerlo torpemente, escribe en tu clase métodos para obtener las propiedades vía ObjectGetInteger()


así ;)

P.D.: Yo también tuve problemas con el SB - no podía encontrar por qué las casillas de verificación se seleccionaban después de minimizar y maximizar el panel - como si el ratón hiciera clic en el objeto... cuando me di cuenta de que no quería volver a leer todo el SB, creé mi propio controlador, que después de minimizar el formulario establecería mediante ObjectSetInteger() la propiedad del objeto deseleccionado para mis casillas de verificación

 
Igor Makanu:

no hay problema con los battons, no recuerdo, pero esta clase tenía métodos listos ( no campos ) - para determinar el estado, si no, entonces comprobar IsActive() o PropFlags() o StateFlags() - exactamente lo que estaba listo allí para averiguar lo que es con el botón ahora

Te diré el segundo hack con gráficos en MQL - puedes encontrar el nombre del botón ( Name()) y por el nombre encontrarlo y obtener el estado vía ObjectGetInteger() y otras funciones, pero para evitar hacerlo torpemente, escribe en tu clase métodos para obtener las propiedades vía ObjectGetInteger()

así ;)

PD: Yo también tuve problemas con el SB - no pude encontrar por qué las casillas de verificación se seleccionan después de minimizar y maximizar el panel - como si el ratón hiciera clic en el objeto... cuando me di cuenta de que no quiero volver a leer todo el SB, creé mi propio controlador que, después de minimizar el formulario, establece a través de ObjectSetInteger() la propiedad del objeto deseleccionado para mis casillas de verificación

Yo también me encontré con este problema. Necesitaba colorear el cuadro de diálogo con mis propios colores. También resultaron estar escondidos en la sección privada. Conseguí resolver este problema usando un método que utiliza ObjectGetInteger() para pintar los paneles directamente. Y después de minimizar y desdoblar también era un desastre.

Este es el aspecto de la cabecera antes de ser minimizada:


Y así después.


Tampoco he podido encontrar por qué se devuelve el color por defecto en los botones de cierre y colapso.

 
Vasiliy Pushkaryov:

Yo también me he encontrado con esto. Necesitaba colorear el cuadro de diálogo de la SB con sus propios colores. Resultó que también estaban escondidos en la sección privada. He conseguido solucionarlo usando un método que utiliza ObjectGetInteger() para pintar el panel directamente. Y después de minimizar y desdoblar también era un desastre.

Este es el aspecto de la cabecera antes de ser minimizada:


Y así después.


Tampoco he podido encontrar por qué se devuelve el color por defecto en los botones de cierre y colapso.

Volví a echar un vistazo al std local y me convencí de mi decisión de escribir mi propia biblioteca))
 
Vladimir Simakov:
Una vez más miré la std local y me convencí de la decisión correcta de escribir mi biblioteca)))

Escribí sobre el momento del botón aquí, extraído de allí:

Siempre que pulses el botón lentamente, una vez por segundo aproximadamente, funciona bien. Empieza a empujar un poco más rápido y a menudo el evento no es interceptado.

¿Ha observado estos problemas en su biblioteca? Me gustaría saber si es la implementación de la SB o la arquitectura de manejo de eventos y no hay forma de evitarlo?

 
Vasiliy Pushkaryov:

... Me gustaría saber, ¿es esto la implementación de la SB o es la arquitectura de manejo de eventos y no hay manera de evitarlo?

Puede crear usted mismo un botón como objeto gráfico sin utilizar la biblioteca y comparar su funcionamiento con un botón creado con la biblioteca.

 
Dmitry Fedoseev:

Puede crear un botón como objeto gráfico usted mismo sin utilizar la biblioteca, y comparar su funcionamiento con el de un botón creado con la biblioteca.

Gracias por la idea, lo probaré.
 
Vasiliy Pushkaryov:

Escribí aquí el momento con los botones, extracto de allí:

¿Ha observado estos problemas en su biblioteca? Me gustaría saber si es la implementación de la SB o la arquitectura de manejo de eventos y no se puede evitar?

Si estás escribiendo para ti mismo (no en el Market), es más fácil hacer ventanas con botones en C# y llamar desde MQL .dll en C# - cualquier fantasía con botones, iconos, casillas de verificación, etc. se realiza en C# en media hora - una hora, pero tuve que buscar material en Google durante una semana.

Lo único que tienes que hacer es mirar la barra que tienes en la carpeta de indicadores y usarla como base - es mucho más rápido crear tu propia interfaz, pero de nuevo, esta es mi experiencia - lo he entendido así

SZS: Acabo de recordar, puse un panel simple en la base de código, no hay botones, pero hay etiquetas de texto y el código es lo más simple posible. https://www.mql5.com/ru/code/25897

 
Dmitry Fedoseev:

Puede crear un botón como objeto gráfico usted mismo sin utilizar la biblioteca y comparar su rendimiento con un botón creado con la biblioteca.

Sí, sacado de un antiguo trabajo, cuando no trabajaba con SB, hice una especie de botón de cierre. Funciona rápidamente:


Resulta que el problema está en la implementación de la SB.

 
Vasiliy Pushkaryov:

Sí, tomado de un antiguo trabajo cuando no trabajaba con SB, hice una especie de botón de cierre. Funciona rápidamente:


Resulta que el problema está en la implementación de la SB.

Labiblioteca estándar implica que los controles se crean en el formulario. Se supone que no funcionan en absoluto, así de simple. Al menos, así era antes.

 
Igor Makanu:

Si estás escribiendo para ti mismo (no en el Mercado), es más fácil hacer ventanas con botones en C# y llamar desde MQL .dll en C# - cualquier fantasía con botones, iconos, casillas de verificación, etc. se puede realizar en C# en media hora - hora, pero tuve que buscar material en Google durante una semana.

Lo único que tienes que hacer es mirar la barra que tienes en el directorio de la Terminal y usarla para crear tu propia interfaz - es mi experiencia, he aprendido todo lo que necesito saber al respecto

ZS: Sí, lo recuerdo, puse un panel sencillo en codebase, no hay botones, pero hay etiquetas de texto y el código es lo más sencillo posible. https://www. mql5.com/ru/code/25897

No, no sé C#.

Echaré un vistazo al panel, gracias.

Razón de la queja: