Discusión sobre el artículo "Interfaces gráficas I: Preparación de la estructura de la biblioteca (Capítulo 1)" - página 2
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
Genial. Si es posible, más imágenes con ejemplos de interfaces gráficas. En general, el tema es muy necesario: hace tiempo que era necesario empezar a documentar la biblioteca estándar.
Quizás antes entendí mal la pregunta.
Con usar clases de la librería estándar me refería sólo a clases de este tipo:
Es decir, aquellas clases con las que puedes crear objetos primitivos, obtener y cambiar sus propiedades.
Pero (aclaro) no uso de la librería estándar la parte que se ofrece para crear interfaces gráficas. Esto es un proyecto completamente aparte.
P.D. Habrá muchas fotos y ejemplos (máximo detalle).
Puede que haya entendido mal la pregunta anterior.
Al utilizar clases de la biblioteca estándar me refería sólo a clases de este tipo:
Es decir, aquellas clases con las que puedes crear objetos primitivos, obtener y cambiar sus propiedades.
Pero (aclaro) no uso de la librería estándar la parte que se ofrece para crear interfaces gráficas. Esto es un proyecto completamente aparte.
P.D. Habrá muchas imágenes y ejemplos (máximo detalle).
Ah, ahora entiendo.
¿Y por qué decidiste no basar tu proyecto en la librería GUI de MQ? ¿Quizás sería más fácil ampliarla y profundizar en ella?
Por cierto, tengo mi propia librería GUI, sería interesante comparar conceptos.
Ah, ya veo.
¿Por qué decidiste no basar tu proyecto en la librería GUI de MQ? ¿Quizás sería más fácil ampliarla y profundizar en ella?
Por cierto, tengo mi propia librería GUI, sería interesante comparar conceptos.
Esbocé mis ideas al respecto al principio de este artículo. Resumiendo, para hacerlo bien (en mi opinión) deberías haber empezado el proyecto desde cero.
Creo que los 14 primeros artículos de esta serie ya te permitirán hacer una comparación adecuada de conceptos. Aquí hay muchos matices, sin la realización de los cuales era imposible lograr una alta calidad.
¡Interesante y útil proyecto concebido! ¡Esperaré con impaciencia la publicación de sus artículos!
Saludos...
¡Buenas tardes!
Tengo una doble sensación al familiarizarme con la biblioteca creada. Por un lado me asombra la flexibilidad y agilidad de la biblioteca. El trabajo realizado es enorme, por lo que, por supuesto, ¡muchas gracias!
Por otro lado, la implementación de algunos puntos es desconcertante, ya que aumenta la intensidad de trabajo a la hora de crear nuevas formas.
Por ejemplo, consideremos la función para mover la forma en el gráfico.
En la función es necesario enumerar todos los objetos formulario creados. ¿Por qué? Porque todos los elementos creados se colocan en el contenedor (array) del propio formulario. ¿Por qué es necesario enumerar todos los elementos creados en la función? ¿Por qué no puedes simplemente hacer un bucle alrededor del contenedor y cambiar las coordenadas de todos los elementos?
Lo mismo ocurre con otros métodos. Por ejemplo, en la función Hide() todos los elementos se ocultan haciendo un bucle alrededor de los elementos del formulario, y en la función Delete() todos los elementos se enumeran discretamente. Poco claro.
Esto lleva al hecho de que cuando se añaden nuevos elementos al formulario, tienes que recordar todas las funciones ESTÁNDAR donde necesitas especificar cada nuevo elemento. Esto NO es muy conveniente. Lo mismo se aplica al foco en un elemento. Si un elemento está en foco, entonces su visualización debe ser cambiada de acuerdo al algoritmo CUANDO es creado, por ejemplo para botones basados en imágenes se especifican las imágenes "BmpFileOn" y "BmpFileOff". También se pueden establecer otras propiedades para el foco: color del marco, color de fondo, color del texto, tamaño del texto, etc. Y en este caso, no hay necesidad de escribirlo en la función de definición de foco, sólo necesitas recorrer el array de elementos y establecer sus propiedades de acuerdo a las propiedades "en foco"/"fuera de foco".
Colapsando...
Inicialmente, la librería está diseñada de tal manera que el formulario está colapsado bajo la cabecera (arriba). Al mismo tiempo, la cabecera permanece donde está el formulario. Estoy intentando implementar el comportamiento estándar del formulario creado, es decir, cuando la ventana se minimiza, la ventana se minimiza hacia abajo y sólo queda la cabecera (en la parte inferior). Además, estoy intentando implementar dos modos del formulario: "estándar", "minimizado" y, por supuesto, minimizado.
Ya en la fase de creación de mis botones me encontré con todos los problemas anteriores. Y el desarrollo acaba de empezar....
También creo que sería más universal crear no un contenedor (array) para almacenar los elementos creados y las operaciones sobre ellos, sino una jerarquía de contenedores. Es decir, se crea un único contenedor para todo el formulario, que permite realizar acciones comunes sobre el formulario: mover, borrar, ocultar, etc. Este contenedor debe incluir otros dos contenedores: el contenedor de elementos de cabecera, el contenedor de elementos del formulario propiamente dicho. También es posible un tercer contenedor: el contenedor del sótano, si existe. A su vez, el contenedor del propio formulario puede contener contenedores de bloques para colocar elementos en el formulario. En una implementación de este tipo, por ejemplo, minimizar el formulario hacia abajo debería resultar en borrar los elementos del propio contenedor del formulario y mover los elementos del contenedor de la cabecera. Al realizar acciones generales, realice operaciones sobre los propios contenedores. Es decir, si se mueve el propio formulario, entonces se mueve el contenedor de elementos de todo el formulario (aplicación).
Espero que el autor entienda mi idea. :)
Una vez más repito: el trabajo realizado es estupendo, útil e informativo. Pero cualquier paso que se aleje de la representación del autor empieza a crear dificultades. Por supuesto, no hay soluciones completamente universales. Pero algunas funciones estándar comunes de la biblioteca podrían hacerse realmente universales.
Saludos, Alexey.
...espero que el autor entienda mi punto de vista.....
Mi punto de vista es claro. Gracias.
La biblioteca está todavía en desarrollo. Está lejos de ser la última versión y muchas partes de ella serán optimizadas y desarrolladas.
Puedes descargar la última versión (2016.11.20) en este artículo: GUI X: Text Input Box, Picture Slider and Simple Controls (build 5).
Entiendo lo que quiere decir. Gracias, señor.
La biblioteca aún está en desarrollo. Está lejos de ser la última versión y muchas partes de ella serán optimizadas y desarrolladas.
Puedes descargar la última versión (2016.11.20) en este artículo: GUIs X: Text Input Box, Picture Slider and Simple Controls (build 5).
Sé que no es la última. :) He descargado la última para mt4 y estoy intentando construir la interfaz sobre ella. Pero entiendo que la libreria para mt5 funcionara tambien bajo mt4, si no se usaran mecanismos especificos para mt5.
Espero que los comentarios y sugerencias que he expresado se reflejen en las próximas versiones de la librería y sea aún más flexible y universal, y al mismo tiempo más sencilla desde el punto de vista de la aplicación práctica. Durante el desarrollo de la biblioteca se utilizó "en cascada" mecanismo de herencia de clases, el mismo que propuse y para la formación de elementos de formulario, es decir, la herencia de contenedores. Y el descendiente puede utilizar no sólo las propiedades globales (de toda la forma-aplicación), sino también las propiedades del padre: puntos de anclaje, la visibilidad, el movimiento y así sucesivamente. :)
Seguiré con gran impaciencia la publicación de nuevos artículos y el desarrollo de la biblioteca.
Saludos, Alexey.
Sé que no será la última. :) He descargado la última para mt4 y estoy intentando construir la interfaz sobre ella. Pero entiendo que la biblioteca para mt5 también funcionará bajo mt4, si no se utilizaron mecanismos específicos para mt5.
La versión para MT4 no será desarrollada por mi parte. Solo para MT5.
Espero que los comentarios y sugerencias que he expresado se reflejen en las próximas versiones de la librería y sea aún más flexible y universal, y al mismo tiempo más sencilla desde el punto de vista de la aplicación práctica.
Al principio, es difícil decir algo. Se puede pensar teóricamente sobre cómo sería mejor durante mucho tiempo. Todo se aclarará en las pruebas reales.
La versión para MT4 ya no será desarrollada por mi parte. Sólo para MT5.
Inicialmente es difícil decir algo. Usted puede pensar teóricamente acerca de cómo sería mejor durante mucho tiempo. Todo se aclarará en las pruebas reales.
Sí, ya he leído que para la versión mt4 no se desarrollará - no es terrible.
Bueno, el hecho de que sólo las pruebas pueden mostrar cómo construir una biblioteca mejor es innegable. Pero desde el punto de vista de la OOP el método propuesto tiene las mejores posibilidades de aplicación práctica. :)