Mi enfoque. El núcleo es el motor. - página 28

 
Dmitry Fedoseev:

Por cierto, la biblioteca de Anatoly también es una broma. ¿Cuántos artículos sobre el tema? ¿Alrededor de 50? En todos los comentarios: "Oh, todavía no, tengo que mejorarlo". ¿Qué para empezar a utilizar su biblioteca debe leer estos 50 artículos? ¿Cuál es la esencia y el significado?

Intenté conectar la mencionada librería, mi opinión es ambigua, sí es conveniente, sí es bonita, pero no me dediqué a MQL cuando se creó la librería, y con las subsecuentes builds de MT, la librería se volvió "condicionalmente operativa", algunos ejemplos de los artículos no compilan o funcionan con bugs, y para entender las toneladas de código, ay, es más fácil usar la entrega estándar de MT

Maxim Kuznetsov:

Los constructores modernos de GUI (los que "extienden los botones en los formularios") son algo bastante tecnológico y adjuntarles elementos MQL no parece fantástico.

Casi todos ellos tienen en la forma intermedia (archivo de proyecto, etc.) un XML que describe la posición y las relaciones entre los elementos.

Generar código para la plataforma de destino es, de hecho, una transformación XSLT que puede hacer cualquiera que se crea desarrollador web :-)

Tomemos como ejemplo EasyAndFast (https://www.mql5.com/ru/code/19703) porque está basado en objetos y tiene todos los componentes necesarios. (y está abierto y documentado, a diferencia de este hilo),
y simplemente escribir un traductor.

No hay un constructor gui-mql, no porque sea mega complicado, sino porque simplemente no es popular.


Sí, los estoy buscando, me interesa, al menos para restregárselo a Peter. ))))

No tengo tiempo ni ganas de trabajar en todos los detalles, ¿por qué no utilizar simplemente Crossplatform GUI builder?

 
Igor Makanu:

Intenté conectar la mencionada librería, mi opinión es ambigua, sí es conveniente, sí es bonita, pero no me dedicaba a MQL cuando se creó esta librería, y con las posteriores builds de MT, la librería se volvió "condicionalmente operativa", algunos ejemplos de los artículos no compilan o funcionan con errores, y para entender toneladas de código, ay, es más fácil usar el paquete por defecto de MT


Sí, lo estoy buscando - ¡por lo menos para restregarle a Peter! ))))

No tengo tiempo ni ganas de investigarlo todo.

Echa un vistazo a QT Designer.

 
Dmitry Fedoseev:

Peter, ¿dónde dice que su interfaz gráfica de usuario no consiste en objetos gráficos, sino que se dibuja en un lienzo? No nos engañemos, se ve fatal.

...

Como artista, no pude pasar de esas palabras.


Claro, está lejos de ser IDEAL, pero ¿"horrible"?

 
Igor Makanu:

Sí, estoy buscando uno - ¡me gustaría restregarle a Peter las narices como mínimo! ))))

Pero en serio, me gustaría probar algún constructor de GUIs multiplataforma, tal vez algo para mostrar, que pueda mirar?

No hace falta que te limpies)). Y no hay necesidad de buscar.

DLL a C-sharp. El entorno VS ya tiene un constructor. El lenguaje es casi similar a MQL. Si no es para el Mercado, sino para usted, la opción más fácil y obvia con aspecto moderno.

Y lo que Peter ofrece es la GUI tipo DOS de la serie Turbo Vision de Borland a principios de los 90.

 
Yuriy Asaulenko:

Y lo que Peter ofrece es una GUI tipo DOS de la serie Turbo Vision de Borland de principios de los 90.

Es una interfaz gráfica de usuario bastante buena. Tal vez soy demasiado viejo, pero creo que es bastante bueno.

La cuestión es quién podría estar interesado en utilizarlo. ¿Cuántos son?

 

El problema no es crear su propia interfaz gráfica de usuario.

El problema es encontrarle un uso significativo que sea necesario para un GRAN número de usuarios. Hasta ahora, esto es lo que todo el mundo tiene dificultades. Si hay una tarea normal, habrá una GUI, y más de una...

Petr, ¿cuál es la respuesta a la pregunta de POR QUÉ los usuarios necesitan tu producto? Entiendo que te fascine el proceso, a mí me pasaba lo mismo. Pero, ¿por qué lo necesitan los usuarios? ¿A quién va dirigido?
 
Georgiy Merts:

Es una interfaz gráfica de usuario bastante buena. Tal vez soy demasiado viejo, pero creo que es bastante bueno.

La pregunta es: ¿quién estaría interesado en utilizarlo? ¿Cuántos hay aquí?

Bueno o malo: todo depende de las tareas específicas. Hace algunos años diseñé un terminal GUI en hojas de Excel, con botones, campos, tablas, gráficos en tiempo real y otros atributos. Lo necesitaba específicamente para el comercio manual. No hubo problemas con la construcción y la interfaz.

La interfaz gráfica de Peter se presenta como una solución al problema y una simplificación de la construcción. Lo concibió y lo hizo, y bien hecho, por supuesto, pero no hay problema aquí durante mucho tiempo, y no hay mucho que simplificar.

 

111

Mm-hmm - hermoso. También hay una incoherencia (de estilo) con algunas de las otras capturas de pantalla, que es muy cuestionable.

 
Реter Konow:

Este es un ejemplo de mi interfaz de conexión:

Aquí ya está todo resuelto.

He echado un vistazo. Es un desastre. El archivo está ocupado casi en su totalidad por la función On_Gui_Event, que tiene 600 líneas. He aquí un fragmento del mismo (se conservan la ortografía y la puntuación):

void On_Gui_Event(int Element, string value)
{
 string action = value, selected_option = value; //DON'T CHANGE THIS LINE
//------------------------------------
 switch(Element)
   {
//=====================================================================================================================
//WINDOW:   Checkboxes | element: CHECKBOX  | name: Checkbox_1  |  Location: Window's Main Frame
//=====================================================================================================================
case CHECKBOX3___Checkbox_1:
               //------------------------------------------------------------------------------------------------------
               //What to do when checkbox checked or unchecked?
               //------------------------------------------------------------------------------------------------------
               switch((int)action)
               {
                case checked:     break;
  
                case unchecked:     break;
               }
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
  
//=====================================================================================================================
//WINDOW:   Checkboxes | element: CHECKBOX  | name: Checkbox_2  |  Location: Window's Main Frame
//=====================================================================================================================
case CHECKBOX4___Checkbox_2:
               //------------------------------------------------------------------------------------------------------
               //What to do when checkbox checked or unchecked?
               //------------------------------------------------------------------------------------------------------
               switch((int)action)
               {
                case checked:     break;
  
                case unchecked:     break;
               }
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
  ...
//=====================================================================================================================
//WINDOW:   Spin edits | element: D_LIST  | name: D_LIST_2  |  Location: Window's Main Frame
//=====================================================================================================================
case D_LIST20___D_LIST_2:
               //------------------------------------------------------------------------------------------------------
               //What to do when option selected?
               //------------------------------------------------------------------------------------------------------
               if(selected_option == "L_ITEM  1"){}
               if(selected_option == "L_ITEM  2"){}
               if(selected_option == "L_ITEM  3"){}
               if(selected_option == "L_ITEM  4"){}
               if(selected_option == "L_ITEM  5"){}
               if(selected_option == "L_ITEM  6"){}
               if(selected_option == "L_ITEM  7"){}
               if(selected_option == "L_ITEM  8"){}
               if(selected_option == "L_ITEM  9"){}
               if(selected_option == "L_ITEM  10"){}
               if(selected_option == "L_ITEM  11"){}
               if(selected_option == "L_ITEM  12"){}
               if(selected_option == "L_ITEM  13"){}
               if(selected_option == "L_ITEM  14"){}
               if(selected_option == "L_ITEM  16"){}
               if(selected_option == "L_ITEM  17"){}
               if(selected_option == "L_ITEM  18"){}
               if(selected_option == "L_ITEM  19"){}
               if(selected_option == "L_ITEM  20"){}
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
  ...
  }
}

Es simplemente basura. El código naturalmente no compila. Ninguna de las constantes del caso está definida en el archivo. El interruptor está dentro de la caja. Las sangrías están hechas de tal manera que quieren confundir a un pobre usuario. Hay un montón de código simplemente ineficiente como if(selected_option == "L_ITEM 1"){} En resumen, es la pesadilla.

 
Vasiliy Sokolov:

He echado un vistazo. Es un desastre. El archivo está ocupado casi en su totalidad por la función On_Gui_Event, que tiene 600 líneas. He aquí un fragmento del mismo (se conservan la ortografía y la puntuación):

Es simplemente basura. El código naturalmente no compila. Ninguna de las constantes del caso está definida en el archivo. El interruptor está dentro de la caja. Las sangrías están hechas de tal manera que quieren confundir a un pobre usuario. Un montón de código simplemente ineficiente como if(selected_option == "L_ITEM 1"){} En resumen, es la pesadilla.

Vasily, me has hecho reír mucho. )) ¿Por qué hay que intentar compilar todo lo que cae en tus manos?)

Este es un ejemplo de archivo de conexión GUI. Pregúntale a Oleg Papkov cómo funciona. ¿Qué tipo de "código ineficiente"? Código normal que se hace para ser lo más claro posible.