Discusión sobre el artículo "Aplicación de los contenedores para componer la interfaz gráfica: clase CBox" - 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
Este código no compila. Compilación 1702.
'pipvaluecalculator.mq5' pipvaluecalculator.mq5 1 1
...
'm_client_area' - error de acceso a miembro privado PipValueCalculator.mqh 118 60
m_client_area' - private member error de acceso PipValueCalculator.mqh 118 91
m_client_area' - private member error de acceso PipValueCalculator.mqh 129 72
m_client_area' - private member error de acceso PipValueCalculator.mqh 148 75
m_client_area' - private member error de acceso PipValueCalculator.mqh 168 77
m_client_area' - miembro privado, error de acceso PipValueCalculator.mqh 187 72
6 error(es), 0 advertencia(s) 7 1
Como nota al margen, a menos que me lo haya perdido, deberías especificar dónde colocar los archivos. Tenemos que probar y mirar el código para saber que necesitamos crear una carpeta "Layouts" en Include y colocar el archivo Box.mqh dentro de ella.
Estoy usando la build 1755.
Ahora el miembro m_client_area en la clase CDialog en Controls\Dialog.mqh es privado y se han creado nuevos métodos para obtener las propiedades Width y Height.
Kode ini tidak dikompilasi Bangun 1702
pipvaluecalculator.mq5' pipvaluecalculator.mq5 1 1
...
'm_client_area' - campo de entrada PipValueCalculator.mqh 118 60
'm_client_area' - kesalahan akses anggota pribadi PipValueCalculator.mqh 118 91
'm_client_area' - kesalahan akses anggota pribadi PipValueCalculator.mqh 129 72
'm_client_area' - kesalahan akses anggota pribadi PipValueCalculator.mqh 148 75
'm_client_area' - kesalahan akses anggota pribadi PipValueCalculator.mqh 168 77
'm_client_area' - kesalahan akses anggota pribadi PipValueCalculator.mqh 187 72
6 error (s), 0 warning (s) 7 1
En caso de error, cuando el usuario se encuentre en el modo de espera, se le pedirá que introduzca el archivo que desee. En caso de emergencia, cuando el usuario se encuentre en el modo de espera, se le pedirá que rellene el siguiente archivo. Por favor, seleccione la carpeta "Layouts" de Include y añada el archivo Box.mqh a la lista.Por favor, seleccione la carpeta "Layouts" de Include y añada el archivo Box.mqh a la lista.
He encontrado un problema con este útil complemento.
Pido consejo a los que saben de controles estándar.
Dado que este complemento con paneles utiliza las clases estándar CWnd, CWndClient, asumo que el conocimiento de su estructura interna puede ser suficiente para entender dónde está el "perro en la pelea".
La esencia del problema. Tomamos el programa Controls2.mq5 del artículo (para la compilación necesitamos también ControlsDialog2.mqh y Box.mqh), lo compilamos, lo ejecutamos.
Casi todo funciona bien excepto el "datapicker". Sólo se abre y se cierra, pero en estado abierto no reacciona a los clicks, saltándose los eventos a los controles subyacentes.
La demo original similar de MQ (Experts/Examples/Controls.mq5) funciona con el "datapicker" normalmente.
Casi todo funciona bien excepto el "datapicker". Sólo se abre y se cierra, pero en el estado abierto no reacciona a las pulsaciones, saltándose los eventos a los controles subyacentes.
La demo original similar de MQ (Experts/Examples/Controls.mq5) funciona con el "datapicker" normalmente.
Se elimina la pregunta. En CDatePicker no hay llamada BringToTop cuando se expande el desplegable, como se hace en CComboBox, por ejemplo. En el ejemplo estándar, el CDatePicker funciona debido a que su inicialización se movió (intencionada o accidentalmente) después de la creación del "leafbox", que está topológicamente por debajo de él. Y los controles en CWndContainer::OnMouseEvent se saltan del último añadido al primero.
Para arreglarlo normalmente, habría que anular CDatePicker::ListShow, pero no es virtual. Tenemos que redefinir CDatePicker::OnClickButton y añadir BringToTop allí. Sin embargo, no podemos hacerlo correctamente como con cualquier método virtual de la biblioteca estándar, porque todas las variables miembro se declaran privadas. En particular, es imposible escribir
porque m_drop no está disponible. Tenemos que llamar a BringToTop tanto al abrir como al colapsar.
y hay algunos errores: