Discusión sobre el artículo "DoEasy. Elementos de control (Parte 17): Recortando partes invisibles de objetos, objetos WinForms auxiliares de botón con flechas"

 

Artículo publicado DoEasy. Elementos de control (Parte 17): Recortando partes invisibles de objetos, objetos WinForms auxiliares de botón con flechas:

En el artículo, crearemos la funcionalidad necesaria para ocultar secciones de objetos que quedan más allá de su contenedor; asimismo, crearemos objetos de botón auxiliares con flechas para usarlos como parte de otros objetos WinForms.

Vamos a compilar el asesor y ejecutarlo en el gráfico:


¿Qué es lo que vemos? El recorte de las zonas que van más allá del alcance de la zona de visibilidad funciona correctamente, los encabezados que van más allá del contenedor se recortan a lo largo de su borde, y si configuramos las coordenadas de TabControl para que el elemento vaya más allá del contenedor a la izquierda, aquí todo se recortará igualmente bien: el elemento en sí se recorta a lo largo de los bordes del panel, y los botones ubicados en el control también se recortan en el borde de la zona de visibilidad del panel, no en su contenedor. Todo funciona bien aquí. Los botones horizontales de izquierda a derecha tienen una anchura menor a la predeterminada (9 píxeles) y, al mismo tiempo, se muestran correctamente.
¿Qué es lo que está mal por ahora? El objeto de sombra aparece antes del panel que lo proyecta. Nos ocuparemos de esto conforme desarrollemos la biblioteca.

Autor: Artyom Trishkin

 
Es extraño ver una respuesta tan débil por parte de la comunidad. ¿Es que ya nadie necesita interfaces gráficas? En su día hubo acaloradas discusiones en torno a este tema. Al parecer, las filas han adelgazado mucho. Es una lástima.

Sólo ahora he encontrado tiempo para leer el código de esta serie con más detalle y me he llevado una grata sorpresa. Por fin, después de tantos años, alguien ha madurado y ha decidido iniciar una nueva ronda de evolución en el desarrollo de interfaces gráficas en MQL, teniendo en cuenta las deficiencias de todas las iteraciones anteriores de otros autores.

Hace poco, después de una larga pausa en el desarrollo de MQL, empecé a trabajar en una nueva versión de la librería EasyAndFastGUI, pero ahora veo que pronto será irrelevante para la comunidad de desarrolladores de MQL, ya que esta versión ya tiene una base que permitirá implementar una solución mucho más interesante.

Espero que el proyecto se finalice y quizás incluso sustituya a la parte gráfica de la librería estándar. Estaré encantado de utilizarla en mis proyectos, si todo lo mínimo necesario para mí, que está implementado en EasyAndFastGUI y mucho más, se hace realidad.

Por supuesto, todavía hay mucho trabajo por hacer, pero estoy seguro de que el autor lo hará.

¡Mucha suerte!
EasyAndFastGUI - библиотека для создания графических интерфейсов
EasyAndFastGUI - библиотека для создания графических интерфейсов
  • www.mql5.com
Библиотека EasyAndFastGUI дает возможность создавать графические интерфейсы для своих MQL-программ.
 
Anatoli Kazharski #:
Es extraño ver una respuesta tan débil por parte de la comunidad. ¿Es que ya nadie necesita interfaces gráficas? En su día hubo acaloradas discusiones en torno a este tema. Al parecer, las filas han adelgazado mucho. Es una lástima.

Sólo ahora he encontrado tiempo para leer el código de esta serie con más detalle y me he llevado una grata sorpresa. Por fin, después de tantos años, alguien ha madurado y ha decidido iniciar una nueva ronda de evolución en el desarrollo de interfaces gráficas en MQL, teniendo en cuenta las deficiencias de todas las iteraciones anteriores de otros autores.

Hace poco, después de una larga pausa en el desarrollo de MQL, empecé a trabajar en una nueva versión de la librería EasyAndFastGUI, pero ahora veo que pronto será irrelevante para la comunidad de desarrolladores de MQL, ya que esta versión ya tiene una base que permitirá implementar una solución mucho más interesante.

Espero que el proyecto se finalice y quizás incluso sustituya a la parte gráfica de la librería estándar. Estaré encantado de utilizarlo en mis proyectos, si todo lo mínimo necesario para mí, que está implementado en EasyAndFastGUI y mucho más, se llevará a cabo.

Todavía queda mucho trabajo por hacer, pero estoy seguro de que el autor lo hará.

¡Éxito!

Necesitaba crear una interfaz, pero no había ni una sola librería con eventos bien elaborados, correcta gestión de ventanas en cuanto a su ubicación mutua, solapamientos y restricciones de alcance. Si en algún lugar había las cosas anteriores con diversos grados de elaboración, había problemas con la creación, eliminación de ventanas y cambio de propiedades en un punto arbitrario en el tiempo.

Todo esto debería ser la columna vertebral de las interfaces gráficas de usuario. Por qué inmediatamente empiezan a hacer "dibujos" no está claro.

Hice algunos pequeños cambios en el código fuente del artículo actual en el Asesor de Expertos:

//--- Создадим объект WinForms Panel
for(int i1=0; i1<2; i1++)
     {
      CPanel *pnl=NULL;
      pnl=engine.CreateWFPanel("WFPanel"+string(i1),50,50,410,200,array_clr,200,true,true,false,-1,FRAME_STYLE_BEVEL,true,false);
      ...
     }

Jugué un poco con los paneles, el resultado es el siguiente:

El cambio de la ventana a primer plano se produce al hacer clic con el ratón, aunque debería ser al hacer clic.

Recepción de eventos se produce a través del indicador, probablemente para el probador se hizo, sin ella los eventos no funcionan, en el probador también, incluso cuando se carga el indicador a través de la plantilla....

 
Anatoli Kazharski #:
Es extraño ver una respuesta tan débil por parte de la comunidad. ¿Es que ya nadie necesita interfaces gráficas? En su día hubo acaloradas discusiones en torno a este tema. Al parecer, las filas han adelgazado mucho. Es una lástima.

Sólo ahora he encontrado tiempo para leer el código de esta serie con más detalle y me he llevado una grata sorpresa. Por fin, después de tantos años, alguien ha madurado y ha decidido iniciar una nueva ronda de evolución en el desarrollo de interfaces gráficas en MQL, teniendo en cuenta las deficiencias de todas las iteraciones anteriores de otros autores.

Hace poco, después de una larga pausa en el desarrollo de MQL, empecé a trabajar en una nueva versión de la librería EasyAndFastGUI, pero ahora veo que pronto será irrelevante para la comunidad de desarrolladores de MQL, ya que esta versión ya tiene una base que permitirá implementar una solución mucho más interesante.

Espero que el proyecto se finalice y quizás incluso sustituya a la parte gráfica de la librería estándar. Estaré encantado de utilizarlo en mis proyectos, si todo lo mínimo necesario para mí, que está implementado en EasyAndFastGUI y mucho más, se llevará a cabo.

Todavía queda mucho trabajo por hacer, pero estoy seguro de que el autor lo hará.

Mucha suerte.
Gracias, Anatoly, por tus comentarios. Por supuesto, todo se irá ultimando.
Me gustaría saber lo que le gustaría ver aquí, ¿qué funcionalidad?
Falta mucho feedback.
 
Aliaksandr Hryshyn #:

Necesitaba crear una interfaz, pero no había ni una sola biblioteca con eventos bien elaborados, gestión correcta de ventanas en cuanto a su ubicación mutua, solapamientos y restricciones de ámbito. Si en algún lugar existían las cosas anteriores con diversos grados de elaboración, había problemas con la creación, eliminación de ventanas y cambio de propiedades en un punto arbitrario en el tiempo.

Todo esto debería ser la columna vertebral de las interfaces gráficas de usuario. No está claro por qué se ponen a "dibujar" enseguida.

Hice algunos cambios menores en el código fuente del artículo actual en el Asesor de Expertos:

Jugué un poco con los paneles, el resultado es el siguiente:

La ventana pasa a primer plano cuando se pulsa el ratón, aunque debería estar pulsado.

La recepción de eventos se realiza a través del indicador, probablemente para el tester, sin él los eventos no funcionan, en el tester también, incluso al cargar el indicador a través de la plantilla....

La escucha de eventos desde otro gráfico se implementa a través del indicador-espía.
Si usted tiene otra manera mejor, por favor sugiera, vamos a considerar.
Eventos no funcionan en el probador como es.
Gracias por señalar el defecto - lo arreglaremos, todavía está en la etapa de desarrollo. La columna vertebral de la que está hablando.
 

¿Para qué sirven los eventos de otros gráficos?

Hice clic en mi aplicación visual, su Asesor Experto se está ejecutando en paralelo, y esto está escrito en los registros:

2022.09.10 22:18:36.256 TestDoEasy117 (AUDUSD,M1)       Графическая метка "1716653226_u_0": ID 10001, 2022.09.10 22:16:34
2022.09.10 22:18:36.256 TestDoEasy117 (AUDUSD,M1)       OnChartEvent: Состояние кнопки: Отжата
2022.09.10 22:18:36.256 TestDoEasy117 (AUDUSD,M1)       OnChartEvent: Изменено свойство графического объекта:
2022.09.10 22:18:36.256 TestDoEasy117 (AUDUSD,M1)       Графическая метка "1716653226_u_0": ID 10001, 2022.09.10 22:16:34
2022.09.10 22:18:36.256 TestDoEasy117 (AUDUSD,M1)       OnChartEvent: Имя BMP-файла:
2022.09.10 22:18:36.256 TestDoEasy117 (AUDUSD,M1)        - Состояние "On" [0]: "\Experts\Greshnik\Strategy_viewer.ex5::1716653226_u_012896816886410156413404032"
2022.09.10 22:18:36.256 TestDoEasy117 (AUDUSD,M1)        - Состояние "Off" [1]: Отсутствует
2022.09.10 22:18:38.291 TestDoEasy117 (AUDUSD,M1)       CGStdGraphObj::PropertiesCheckChanged: Создан снимок истории изменений графического объекта #19: 2022.09.09 23:54:59.875
2022.09.10 22:18:38.291 TestDoEasy117 (AUDUSD,M1)       OnChartEvent: Изменено свойство графического объекта:
2022.09.10 22:18:38.291 TestDoEasy117 (AUDUSD,M1)       Графическая метка "1716653226_u_0": ID 10001, 2022.09.10 22:16:34
2022.09.10 22:18:38.291 TestDoEasy117 (AUDUSD,M1)       OnChartEvent: Время создания: 2022.09.10 22:18:38
2022.09.10 22:18:38.291 TestDoEasy117 (AUDUSD,M1)       OnChartEvent: Изменено свойство графического объекта:
2022.09.10 22:18:38.291 TestDoEasy117 (AUDUSD,M1)       Графическая метка "1716653226_u_0": ID 10001, 2022.09.10 22:16:34
2022.09.10 22:18:38.291 TestDoEasy117 (AUDUSD,M1)       OnChartEvent: Имя BMP-файла:
2022.09.10 22:18:38.291 TestDoEasy117 (AUDUSD,M1)        - Состояние "On" [0]: "\Experts\Greshnik\Strategy_viewer.ex5::1716653226_u_012896816886410156413395097"
2022.09.10 22:18:38.291 TestDoEasy117 (AUDUSD,M1)        - Состояние "Off" [1]: Отсутствует
2022.09.10 22:18:38.959 TestDoEasy117 (AUDUSD,M1)       CGStdGraphObj::PropertiesCheckChanged: Создан снимок истории изменений графического объекта #20: 2022.09.09 23:54:59.875

No entiendo el propósito de esto.


Es muy lento de contar. ¿Qué pasará con la tabla con un gran número de celdas?

Medir la velocidad de actualización de los objetos gráficos:

//--- Manejo de eventos de una colección de elementos gráficos
   ulong mcs=GetMicrosecondCount();
   engine.GetGraphicObjCollection().OnChartEvent(id,lparam,dparam,sparam);
   Print((GetMicrosecondCount()-mcs)/1000.0);

Clic con el botón izquierdo del ratón en el centro del panel: 5ms

Clic en la cabecera de una pestaña activa: 7 ms.

Clic en la cabecera de una pestaña inactiva: 20 ms


 
Aliaksandr Hryshyn #:

¿Para qué sirven los eventos de las otras cartas?

Hice clic en mi aplicación visual, su Asesor Experto se está ejecutando en paralelo, los registros muestran esto:

No entiendo el propósito de esto.


Es muy lento para contar. ¿Qué pasará con la tabla con un gran número de células?

Medir la velocidad de actualización de los objetos gráficos:

Clic con el botón izquierdo del ratón en el centro del panel: 5 ms

Clic en el título de la pestaña activa: 7 ms

Clic en la cabecera de una pestaña inactiva: 20 ms


La librería escanea todo el entorno y muestra mensajes sobre los eventos registrados. Por el momento son sólo mensajes de depuración - la biblioteca está en desarrollo. Cuando sea completamente funcional, se podrá elegir lo que se necesita y lo que no.

 
Artyom Trishkin #:
Gracias, Anatoly, por tus comentarios. Por supuesto, todo será finalizado.
Me gustaría saber lo que le gustaría ver aquí, ¿qué funcionalidad?
Los comentarios son muy necesarios.

Las necesidades mínimas están cubiertas con EasyAndFastGUI. Tal vez liberar la última versión en el mercado por una pequeña cuota, ya que no hay mucho tiempo para el apoyo gratuito.

Tal como está, este tema se puede desarrollar sin fin. Hay tantas opciones diferentes, donde todo esto podría llevar, que es fantástico. )

Volveremos sobre este tema otra vez. Por ahora estamos muy ocupados. Seguid así, ¡es muy emocionante! 👍

 
Anatoli Kazharski #:

Tengo mis necesidades mínimas cubiertas con EasyAndFastGUI. Probablemente libere la última versión en el marketplace por un módico precio, ya que no hay mucho tiempo para soporte gratuito.

Tal y como está, este tema puede desarrollarse sin fin. Hay tantas opciones diferentes, donde todo esto podría llevar, que es fantástico. )

Volveremos de nuevo sobre esta cuestión. Por ahora estoy muy ocupado. Seguid así, ¡es muy emocionante! 👍

Dobro 👌