Discusión sobre el artículo "Interfaces gráficas III: Grupos de botones simples y multifuncionales (Capítulo 2)"

 

Artículo publicado Interfaces gráficas III: Grupos de botones simples y multifuncionales (Capítulo 2):

El primer capítulo de la tercera pare de la serie estaba dedicada a los botones simples y multifuncionales. En el segundo capítulo hablaremos de los grupos de botones interconectados que permiten crear los controles, cuando el usuario puede elegir una opción de un determinado conjunto (grupo).

Creamos el archivo RadioButtons.mqh con la clase CRadioButtons, que debe contener los métodos virtuales estándar y los miembros de la clase para guardar y obtener el puntero al formulario. Puede ver los ejemplos en las clase de otros controles más arriba. Incluimos el archivo RadioButtons.mqh en la librería (WndContainer.mqh).

Cada botón de opción va a componerse de tres objetos primitivos:

  1. fondo;
  2. icono;
  3. etiqueta de texto.


Fig. 3. Partes integrantes de los botones de opción.


Autor: Anatoli Kazharski

 
Al compilar el archivo SplitButton.mqh, aparece el error "'return' - cannot convert from const pointer to non-const pointer SplitButton.mqh 90 65"

 
Alexander:
Al compilar el archivo SplitButton.mqh, aparece el error "'return' - cannot convert from const pointer to non-const pointer SplitButton.mqh 90 65".

Sí, este error apareció después de la última actualización del terminal. Las reglas del "juego" han cambiado un poco. Puedes solucionarlo simplemente borrando el especificador const.

Ve a la línea con el error y reemplaza esta línea

CContextMenu     *GetContextMenuPointer(void)        const { return(::GetPointer(m_drop_menu)); }

Por esta otra:

CContextMenu     *GetContextMenuPointer(void)              { return(::GetPointer(m_drop_menu)); }

//---

Tendrás que hacer correcciones similares en todos los archivos en los que se produzca este error. En los próximos artículos de la serie se corregirá el error.

Gracias por publicar.

 
MetaQuotes Software Corp.:

Nuevo artículo Interfaces gráficas III: Grupos de botones simples y multifuncionales (Capítulo 2) ha sido publicado:

Autor: Anatoli Kazharski

¡Gran trabajo !


Pero: cuando intento usar el Panel como Indicador en MT4 (!) , cada click en un "Botón Icono" resulta en una impresión doble de tu
::Print(__FUNCTION__," > id: ",id,"; lparam: ",lparam,"; dparam: ",dparam,"; sparam: ",sparam);

Así que cada acción de clic como un incremento o algo más se hará dos veces :(
¿Hay alguna manera de solucionarlo?

P.S. lo curioso es, que todo funciona bien en MT5. Sólo MT4 tiene este problema cuando se utiliza como indicador. Como Experto también funciona bien.

 
marquez:

...

¿Hay alguna manera de arreglarlo ?

P.S. lo curioso es, que todo funciona bien en MT5. Sólo MT4 tiene este problema cuando se utiliza como indicador. Como Experto también funciona bien.

Gracias. Este error se discute en el Service Desk. Corrected'll hacer después de la primera versión de la biblioteca se publicará. Habrá 25 artículos.
 

Hola,


He hecho un quick'n'dirty solución que funciona para mí muy bien. Mi manera era comprobar el botón izquierdo pulsado bit separado al principio en OnEvent y si se establece escribir un bool true en un helper. Después de que el regular si statemenet ampliado con helper == true , y el establecimiento dentro de la si sólo restablecer el helper. Funciona casi perfecto. En algunos casos a los clics rápidos no se mencionan, pero mejor clic más lento, excepto tener resultados dobles :)

BTW: sería bueno, si alguien pudiera actualizar todas sus bibliotecas actuales al Inglés. Su más reciente por ejemplo, el artículo 05 y así sucesivamente son sólo en ruso.

 

Hola,



Tengo una pregunta,

¿cómo se hace para que la parte negra alrededor de los iconos sea transparente?

thk

 

Hola.

Acabo de descargar los archivos del artículo3

Cuando lo he compilado.. Me da el siguiente error

CContextMenu *GetContextMenuPointer(void) const { return(::GetPointer(m_drop_menu));

Archivo = splitButton.mqh.

¿Alguien sabe cómo solucionarlo?


Estoy intentando crear un simple Botón.

gracias

 
Kristina Suh simple botón.

Gracias

Borrar "const" está bien

CContextMenu *GetContextMenuPointer(void) { return(::GetPointer(m_drop_menu));