Librerías: EasyAndFastGUI - librería para crear interfaces gráficas - página 8
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
Compilando el ExampleEAF.mq5 hizo el truco.
Yo estaba asumiendo que tenía que compilar una biblioteca cuando quiero crear cosas propias con ella.
De todas formas, ¡muchas gracias!
Ah y me estaba tropezando con esta línea de código en la parte superior de la mayoría de los archivos de la biblioteca:
class CWindow;¿Es la creación de una "clase falsa" algún truco para evitar una pesadilla #include? ¿Cómo puede el compilador más tarde realmente vincular la clase correcta que realmente se está utilizando?
Primero, me gustaría finalizar lo que tenemos... Después de todo, todavía hay muchas deficiencias.
Tengo algunas observaciones sobre la arquitectura. Las propiedades especificadas del objeto y la imagen mostrada viven sus propias vidas, independientemente una de la otra. Y se requiere una llamada obligatoria a Update(), de lo contrario permanecerán en realidades paralelas. Creo que esto es incorrecto, teniendo en cuenta que tenemos un modelo basado en eventos.La actualización manual (redibujar) no debería ser un prerrequisito, sólo permite mostrar los cambios inmediatamente, pero todos los cambios deberían mostrarse de todos modos. Para ello, debería enviarse un mensaje (evento) para redibujar este objeto, que se procesará más tarde.
Es decir, más o menos así
Usando ChangeWindowWidth, cambio el ancho de la ventana para que se salga del gráfico actual. Después de eso, cuando intento mover esta ventana, se pega automáticamente al borde izquierdo del gráfico. ¿Cómo desactivar esto? No puedo encontrar un lugar en el código.
Usando ChangeWindowWidth, cambio el ancho de la ventana para que se salga del gráfico actual. Después de eso, cuando intento mover esta ventana, se pega automáticamente al borde izquierdo del gráfico. ¿Cómo desactivar esto? No puedo encontrar un lugar en el código.
Necesitas reescribir el método CWindow::UpdateWindowXY(). Actualmente está implementado de tal manera que los bordes de la ventana no pueden salirse del gráfico cuando se mueve la ventana.
Por cierto, sobre cambiar el ancho de la ventana
m_window1.ChangeWindowWidth(NEW_WIDTH); m_window1.Update(true);En MT5 todo está bien, pero en MT4 es así
Después de hacer click en la cabecera, los botones se mueven a su sitio. ¿Me podéis decir por dónde tengo que mirar? ¿Dónde se implementa el movimiento de estos botones?
Por cierto, acerca de cambiar el ancho de la ventana
En MT5 todo está bien, pero en MT4 es así
Después de hacer click en la cabecera, los botones se mueven a su sitio. ¿Me puedes decir por donde mirar? ¿Dónde se implementa el movimiento de estos botones?
Mira el método Moving().
Intenta acceder a los botones de la ventana mediante punteros y llama a este método.
Sí, necesita un aumento proporcional de la anchura de todas las columnas o sólo de la última columna. Es preferible esto último.
Pero en la versión actual es problemático implementar esto incluso por ti mismo, porque no he encontrado un método en tu clase para obtener el ancho actual de la columna, y todos los campos son privados. En general, al menos este método debería ser añadido.
Así es como puedes intentar implementar lo que necesitas ahora:
Mira el método Moving().
Intenta acceder a los botones de la ventana mediante punteros y llama a este método.
Sí, eso es :) ¡Gracias!
Pensaba que ya lo había mirado todo y se me había pasado lo más obvio :)
Así puedes intentar darte cuenta de lo que necesitas ahora:
Es sólo un ancho de columna fijo, pero estábamos hablando de cambiar dinámicamente el ancho de las columnas en función de su ancho anterior. Sin embargo, ya he completado la clase añadiendo allí el método int ColumnWidth(int i)
Buenas tardes.
El problema es mayor :)
Creamos un objeto dinámico, por ejemplo una etiqueta
¿Pero como borrarlo?
Lo borro de esta manera.
Pero después de borrarlo, se bloquea, dice que el acceso al puntero es incorrecto.
Por lo que he entendido, CWndContainer::AddToElementsArray añade el objeto a las matrices comunes, pero Delete() no lo borra de ahí, y la ventana intenta acceder al objeto. No encuentro ninguna otra similar a Delete().
¿Cómo borrar un objeto correctamente?