Discusión sobre el artículo "Interfaces gráficas X: Control "Hora", control "Lista de las casillas de verificación" y ordenamiento (sort) de la tabla (build 6)" - página 3
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
Me refiero en el sitio en el artículo - tal vez allí el viejo fue añadido a las actualizaciones. Tomo el archivo de la última actualización, descargado desde el sitio desde la parte inferior del artículo de la cremallera.
Aquí, hecho las correcciones como he escrito anteriormente:
Bien. Si no, podrías tener algo clavado ahí, como ha pasado muchas veces. ) Pero lo tendré en cuenta.
Me estás obligando a hacer una estupidez.
Pequeña, pero ya ves.
Y podrías cargarlo tú mismo y mirar dentro, es fácil, sobre todo porque te lo han dicho.
Me estás obligando a hacer algo estúpido.
Es pequeño, pero puedes verlo.
Podrías haberlo descargado tú mismo y mirar dentro, es fácil, sobre todo desde que te lo contaron.
No te pedí ninguna prueba. Sólo he dicho que lo tendré en cuenta. Pero aún no lo he reproducido. Lo tendré en cuenta.
Si hay un problema, tu arreglo puede no funcionar para todos los casos. Funciona para tu caso, pero tienes que probar todos los modos allí. Lo haré yo mismo si encuentro algún problema.
De verdad, no hagas tonterías. )
No te pedí ninguna prueba. Sólo dije que lo tendría en cuenta. Pero aún no lo he reproducido. Lo tendré en cuenta.
Si hay un problema, puede que tu solución no funcione para todos los casos. Funciona para tu caso, pero tienes que probar todos los modos allí. Lo haré yo mismo si encuentro algún problema.
De verdad, no hagas tonterías. )
Vale, no lo haré ;)
Tol, pregunta: las tablas se ordenan por columnas - todo es normal. Pero ..., si la tabla tiene filas vacías, y hay muchas, entonces la ordenación incluye también estas filas vacías. Resulta que, digamos que hay una tabla con mil filas (1001 - cero para la cabecera) - de acuerdo con el número máximo de caracteres en la visión general del mercado. Pero en este momento sólo hay 10 caracteres en la visión general del mercado. Están todos en las diez primeras filas de la tabla, de la primera a la décima. El resto de las filas están vacías (las tablas no son dinámicas, y se pueden añadir/eliminar símbolos de la tabla). Si se intenta ordenar una tabla de este tipo, la lista ordenada llega hasta el final de la tabla - hasta las filas 990 - 1000 (cero - la cabecera), y se pueden ver filas vacías en la parte superior. Esto no es bueno y, en mi opinión, es una omisión.
... las tablas no son dinámicas, y se pueden añadir/eliminar caracteres a/de la tabla...
Pronto será dinámico. Ahora mismo estoy en ello.
... ¿Y el problema de incluir filas completamente vacías en la lista ordenada? ¿Qué pasa con eso?
Seguirá así por ahora. No voy a volver a la clasificación en el corto plazo.
...
Lo mismo ocurre con la línea de separación en el menú contextual en ContextMenu.mqh - la barra de separación entre los elementos del menú no está en sus coordenadas.
En el método
//| Crea una línea divisoria|
//+------------------------------------------------------------------+
bool CContextMenu::CreateSeparateLine(const int line_number,const int x,const int y)
{
//--- Guardar el puntero del formulario
m_sep_line[line_number].WindowPointer(m_wnd);
//--- Establecer propiedades
m_sep_line[line_number].TypeSepLine(H_SEP_LINE);
m_sep_line[line_number].DarkColor(m_sepline_dark_color);
m_sep_line[line_number].LightColor(m_sepline_light_color);
m_sep_line[line_number].AnchorRightWindowSide(m_anchor_right_window_side);
m_sep_line[line_number].AnchorBottomWindowSide(m_anchor_bottom_window_side);
//--- Crear una línea divisoria
if(!m_sep_line[line_number].CreateSeparateLine(m_chart_id,m_subwin,line_number,x,y,m_x_size-10,2))
return(false);
//--- Guardar el puntero del objeto
CElement::AddToArray(m_sep_line[line_number].Object(0));
return(true);
}
//+------------------------------------------------------------------+
he sustituido el resaltado por
//| Crea una línea divisoria|
//+------------------------------------------------------------------+
bool CContextMenu::CreateSeparateLine(const int line_number,const int x,const int y)
{
//--- Guardar el puntero del formulario
m_sep_line[line_number].WindowPointer(m_wnd);
//--- Establecer propiedades
m_sep_line[line_number].TypeSepLine(H_SEP_LINE);
m_sep_line[line_number].DarkColor(m_sepline_dark_color);
m_sep_line[line_number].LightColor(m_sepline_light_color);
m_sep_line[line_number].AnchorRightWindowSide(m_anchor_right_window_side);
m_sep_line[line_number].AnchorBottomWindowSide(m_anchor_bottom_window_side);
//--- Crear una línea divisoria
if(!m_sep_line[line_number].CreateSeparateLine(m_chart_id,m_subwin,line_number,x-m_wnd.X(),y-m_wnd.Y(),m_x_size-10,2))
return(false);
//--- Guardar el puntero del objeto
CElement::AddToArray(m_sep_line[line_number].Object(0));
return(true);
}
//+------------------------------------------------------------------+
y la barra separadora está en su lugar.
Lo mismo con la línea de separación en el menú contextual en ContextMenu.mqh - la línea de separación entre los elementos del menú no está en sus coordenadas.
He reproducido todos estos casos. Esto se aplica a todos los elementos que se utilizan como componentes en otros elementos. Se detecta cuando las coordenadas absolutas iniciales del formulario, al crear la GUI, son mayores que (1,1).
La solución estará en la próxima versión. Como solución rápida temporal, (1) tus ejemplos o (2) simplemente establecer inicialmente el formulario en coordenadas (1,1) funcionará. El segundo es mejor, ya que puede espolvorear en otros modos de posicionamiento de elementos.