Mientras realizaba la tarea de añadir/eliminar pestañas dinámicamente y añadir/eliminar gráficos a la matriz de pestañas, me encontré con el problema de la imposibilidad de obtener el nombre de las pestañas en la clase CTabs. En este sentido, sugiero al desarrollador que complemente esta clase con un método para obtener el nombre de la pestaña:
//--- Establece (1) el texto (nombre de la pestaña) en el índice especificado(2) получает текст (имя вкладки) по указанному индексуvoid Text(constuint index,conststring text); // este método esstring Text(constuint index) { return m_tab[index].text; } // no es suficiente
Añadir este método es necesario debido a que incluso heredando de la clase CTabs para complementar los métodos que faltan, será imposible implementar el método sobrecargadoText, debido a que el objeto m_tab[] se encuentra en el área protegida de la clase. Y editar la clase a tu gusto viola el principio de POO.
Añadir imágenes a la biblioteca EasyAndFastGUI/MQL5/Images/EasyAndFastGUI/Icons/bmp16. Para los arbitrajistas "de dos patas" será útil no sólo para mí ))
Anatoli Kazharski: @Pavel Kolchin, para evitar que las flechas de los tratos cuelguen por encima del panel utiliza el método CWndEvents::ResetWindow().
Por ejemplo, tengo este contenido del método CProgram::OnTradeEvent():
//+------------------------------------------------------------------+//| Evento de transacción comercial|//+------------------------------------------------------------------+void CProgram::OnTradeEvent(void)
{
//--- Envío de un evento a todos los gráficos
m_events.SendEventToAllCharts(0,ON_TRADE_EVENT,0,0.0,m_program_name);
//--- Establecer las transacciones de la última posiciónif(m_show_deals.CheckButtonState())
if(m_vdeals.ShowDealsLastPosition())
ResetWindow();//--- Comprobación de la distancia de stop lossif(m_trailing_stop.CheckButtonState())
m_ctrade.CheckStopLossSize(::Symbol());
//--- Puesta a cero de variables para operaciones comerciales
m_ctrade.ZeroCalcPositionVariables();
//--- Inicialización de la matriz de saldo y actualización de las series en el gráfico
InitBalanceArray();
m_line_chart.SeriesUpdate(0,m_balance_data,"Balance",clrCornflowerBlue);
}
No consigo averiguar cómo vincular el elemento_2, por ejemplo, una tabla, al borde inferior del elemento_1, por ejemplo, la misma tabla, es decir, el elemento_1 está por encima del elemento_2. Como resultado, es necesario que cuando el tamaño del gráfico cambie, el borde inferior del elemento_1 se desplace y el borde superior del elemento_2 se desplace después. La librería dispone de los métodos AutoYResizeMode y AutoYResizeBottomOffset, pero no consigo averiguar cómo implementar el desplazamiento de los bordes superiores.
Konstantin: No consigo averiguar cómo vincular el elemento_2, por ejemplo, una tabla, al borde inferior del elemento_1, por ejemplo, la misma tabla, es decir, el elemento_1 está por encima del elemento_2. Como resultado, es necesario que cuando el tamaño del gráfico cambie, el borde inferior del elemento_1 se desplace y el borde superior del elemento_2 se desplace después. Existen métodos AutoYResizeMode y AutoYResizeBottomOffset en la librería, pero no consigo averiguar cómo implementar el desplazamiento de los límites superiores.
También hay métodos para unir elementos:
//--- Modo (get/set) de vincular un elemento a (1) la derecha y (2) el borde inferior de la ventanabool AnchorRightWindowSide(void) const { return(m_anchor_right_window_side); }
void AnchorRightWindowSide(constbool flag) { m_anchor_right_window_side=flag; }
bool AnchorBottomWindowSide(void) const { return(m_anchor_bottom_window_side); }
void AnchorBottomWindowSide(constbool flag) { m_anchor_bottom_window_side=flag; }
//---
Trate de resolver el problema en combinación con estas propiedades.
Mientras realizaba la tarea de añadir/eliminar pestañas dinámicamente y añadir/eliminar gráficos a la matriz de pestañas, me encontré con el problema de la imposibilidad de obtener el nombre de las pestañas en la clase CTabs. En este sentido, sugiero al desarrollador que complemente esta clase con un método para obtener el nombre de la pestaña:
Añadir este método es necesario debido a que incluso heredando de la clase CTabs para complementar los métodos que faltan, será imposible implementar el método sobrecargado Text, debido a que el objeto m_tab[] se encuentra en el área protegida de la clase. Y editar la clase a tu gusto viola el principio de POO....
@Pavel Kolchin, para evitar que las flechas de los tratos cuelguen por encima del panel utiliza el método CWndEvents::ResetWindow().
¿dónde ponerlo?
Prueba OnTrade().
No puedo, falla.
No hay tal evento en el archivo del menú, pero si lo insertas en el archivo principal, falla.
No puedo, falla
No existe tal evento en el archivo del menú, pero si lo pegas en el archivo principal, falla.
Necesitas crear un método CProgram::OnTradeEvent() en la clase de aplicación personalizada.
Y en el archivo principal debe ser llamado en la función OnTrade():
//---
Por ejemplo, tengo este contenido del método CProgram::OnTradeEvent():
No consigo averiguar cómo vincular el elemento_2, por ejemplo, una tabla, al borde inferior del elemento_1, por ejemplo, la misma tabla, es decir, el elemento_1 está por encima del elemento_2. Como resultado, es necesario que cuando el tamaño del gráfico cambie, el borde inferior del elemento_1 se desplace y el borde superior del elemento_2 se desplace después. Existen métodos AutoYResizeMode y AutoYResizeBottomOffset en la librería, pero no consigo averiguar cómo implementar el desplazamiento de los límites superiores.
También hay métodos para unir elementos:
//---
Trate de resolver el problema en combinación con estas propiedades.