¿Puede decirme cómo llamar a un cuadro de diálogo? Por ejemplo, he creado un panel en el que hay un botón "Cerrar todas las posiciones". Cuando hago clic en este botón, debería aparecer un cuadro "¿Está seguro? Sí/No. ¿Cómo implementar esto?
Actualmente heredando de CAppDialog, he creado un pequeño formulario con botones Ok/Cancel. Al hacer clic en el botón Ok, he añadido una línea
gDialogForm.Destroy();
ChartRedraw();
Pero el formulario de diálogo sigue en la pantalla. ¿Cómo solucionarlo?
Nextor cuadro de diálogo? Por ejemplo, he creado un panel en el que hay un botón "Cerrar todas las posiciones". Cuando hago clic en este botón, debería aparecer un cuadro "¿Está seguro? Sí/No. ¿Cómo implementarlo?
Actualmente heredando de CAppDialog, he creado un pequeño formulario con botones Ok/Cancelar. Al hacer clic en el botón "Ok", he añadido una línea
Pero el formulario de diálogo sigue en la pantalla. ¿Cómo solucionarlo?
voidOnChartEvent(constint id, // ID del eventoconstlong& lparam, // Parámetro de tipo long eventconstdouble& dparam, // Parámetro de tipo double eventconststring& sparam // Parámetro de tipo cadena eventos
)
{
// Cerrar todas las cuentasif(id==CHARTEVENT_OBJECT_CLICK && StringFind(sparam,"ClosePos",0)!=-1)) {
int MB=MessageBox("Close All Positions\nAccount Profit= "+DoubleToString(AccountInfoDouble(ACCOUNT_PROFIT),2),
"Close All Positions?", MB_OKCANCEL|MB_ICONQUESTION);
if(MB==1)
ClosePosSortProfit("", -1, -1, clrGray);
}
}
Nextor cuadro de diálogo? Por ejemplo, he creado un panel en el que hay un botón "Cerrar todas las posiciones". Cuando hago clic en este botón, debería aparecer un cuadro "¿Está seguro? Sí/No. ¿Cómo implementarlo?
Actualmente heredando de CAppDialog, he creado un pequeño formulario con botones Ok/Cancelar. Al hacer clic en el botón "Ok", he añadido una línea
Pero el formulario de diálogo sigue en la pantalla. ¿Cómo solucionarlo?
Nextor cuadro de diálogo? Por ejemplo, he creado un panel en el que hay un botón "Cerrar todas las posiciones". Cuando hago clic en este botón, debería aparecer un cuadro "¿Está seguro? Sí/No. ¿Cómo implementarlo?
Actualmente heredando de CAppDialog, he creado un pequeño formulario con botones Ok/Cancelar. Al hacer clic en el botón "Ok", he añadido una línea
Pero el formulario de diálogo sigue en la pantalla. ¿Cómo solucionarlo?
Tome el ejemplo de ' Close On Chart Panel' e inserte una llamada a 'MessageBox' en los manejadores de clic.
En el fichero 'Close On Chart Panel Dialog.mqh', haga estos cambios:
//+------------------------------------------------------------------+//| Manejador de eventos|//+------------------------------------------------------------------+void CControlsDialog::OnClickButton1(void)
{
int answer=MessageBox("Close all Sell?","Close all Sell",MB_OKCANCEL|MB_ICONQUESTION);
if(answer==IDOK)
{
Print(__FUNCTION__);
m_trading_engine.ClosePositions(POSITION_TYPE_SELL);
}
}
//+------------------------------------------------------------------+//| Manejador de eventos|//+------------------------------------------------------------------+void CControlsDialog::OnClickButton2(void)
{
int answer=MessageBox("Close all Buy?","Close all Buy",MB_OKCANCEL|MB_ICONQUESTION);
if(answer==IDOK)
{
Print(__FUNCTION__);
m_trading_engine.ClosePositions(POSITION_TYPE_BUY);
}
}
//+------------------------------------------------------------------+//| Manejador de eventos|//+------------------------------------------------------------------+void CControlsDialog::OnClickButton3(void)
{
int answer=MessageBox("Close all Profit?","Close all Profit",MB_OKCANCEL|MB_ICONQUESTION);
if(answer==IDOK)
{
Print(__FUNCTION__);
m_trading_engine.CloseProfitPositions();
}
}
//+------------------------------------------------------------------+//| Manejador de eventos|//+------------------------------------------------------------------+void CControlsDialog::OnClickButton4(void)
{
int answer=MessageBox("Close all Loss?","Close all Loss",MB_OKCANCEL|MB_ICONQUESTION);
if(answer==IDOK)
{
Print(__FUNCTION__);
m_trading_engine.CloseLossPositions();
}
}
Советник-утилита. Панель на базе класса CDialog. Кнопки на базе класса СButton. Четыре кнопки для закрытия BUY, SELL, всех прибыльных, всех убыточных. Работа по текущему символу
Estoy tratando de hacer mi propio , en mi panel haciendo clic en un botón el otro debe ser desactivar y ocultar , será ocultar cuando hago clic en el área del botón oculto todavía funciona
Pongo mis códigos aquí si usted me podría ayudar que sería genial
Indicador:
//+------------------------------------------------------------------+//|Indicador_Q_Test.mq4//| Copyright 2020, MetaQuotes Software Corp. |//| https://www.mql5.com//+------------------------------------------------------------------+#property copyright"Copyright 2020, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"#property strict#property indicator_chart_window#include <WinUser32.mqh>
#include "PanelDialog_Q.mqh"
CPanelDialogQ ExtDialog;
//+------------------------------------------------------------------+//| Función de inicialización del indicador personalizada |//+------------------------------------------------------------------+intOnInit()
{
//--- asignación de búferes indicadoresif(!ExtDialog.CreateQ(0,"Question",0,100,100,400,230,"This the test Question?"))
return(INIT_FAILED);
//--- ejecutar aplicaciónif(!ExtDialog.Run())
return(INIT_FAILED);
//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Función de iteración del indicador personalizada|//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---//--- valor de retorno de prev_calculado para la siguiente llamadareturn(rates_total);
}
//+------------------------------------------------------------------+//| Función ChartEvent|//+------------------------------------------------------------------+voidOnChartEvent(constint id,
constlong &lparam,
constdouble &dparam,
conststring &sparam)
{
//---
ExtDialog.ChartEvent(id,lparam,dparam,sparam);
}
//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
ExtDialog.Destroy(reason);
}
Clase:
//+------------------------------------------------------------------+//|PanelDialog.mqh ||//| Copyright 2009-2015, MetaQuotes Software Corp. |//| http://www.mql5.com//+------------------------------------------------------------------+#include <Controls\Dialog.mqh>
#include <Controls\Button.mqh>
#include <Controls\Edit.mqh>
#include <Controls\ListView.mqh>
#include <Controls\ComboBox.mqh>
#include <Controls\SpinEdit.mqh>
#include <Controls\RadioGroup.mqh>
#include <Controls\CheckGroup.mqh>
#include <Controls\Label.mqh>
#include <Controls\Scrolls.mqh>
//+------------------------------------------------------------------+//| define|//+------------------------------------------------------------------+//--- sangrías y espacios#define INDENT_LEFT_ScrollQ (11) // sangría desde la izquierda (teniendo en cuenta el ancho del borde) (sólo para la barra de desplazamiento)#define INDENT_LEFTQ (11) // sangría desde la izquierda (teniendo en cuenta la anchura del borde)#define INDENT_TOPQ (11) // sangría desde arriba (teniendo en cuenta la anchura del borde)#define INDENT_RIGHTQ (11) // sangría desde la derecha (teniendo en cuenta la anchura del borde)#define INDENT_BOTTOMQ (11) // sangría desde abajo (teniendo en cuenta la anchura del borde)#define CONTROLS_GAP_XQ (80) // hueco por coordenada X#define CONTROLS_GAP_YQ (40) // hueco por coordenada Y//--- para botones#define BUTTON_WIDTHQ (60) // tamaño por coordenada X#define BUTTON_HEIGHTQ (20) // tamaño por coordenada Y//--- para el área de indicación#define EDIT_HEIGHTQ (20) // tamaño por coordenada Y#define GROUP_WIDTHQ (150) // tamaño por coordenada X#define LIST_HEIGHTQ (379) // tamaño por coordenada Y#define RADIO_HEIGHTQ (56) // tamaño por coordenada Y#define CHECK_HEIGHTQ (93) // tamaño por coordenada Y//+------------------------------------------------------------------+//| Clase CPanelDialog|//| Uso: diálogo principal de la aplicación SimplePanel |//+------------------------------------------------------------------+class CPanelDialogQ : public CAppDialog
{
private:
CLabel m_Label_Q_text;
CButton m_button_Yes;
CButton m_button_No;
//****************************************************public:
CPanelDialogQ(void);
~CPanelDialogQ(void);
//--- crearvirtualbool CreateQ(constlong chart,conststring name,constint subwin,constint x1,constint y1,constint x2,constint y2,string QText);
//--- manejador de eventos gráficosvirtualbool OnEvent(constint id,constlong &lparam,constdouble &dparam,conststring &sparam);
protected:
//--- crear controles dependientesbool CreateLabel_Q_text(string QT);
bool CreateButton_Yes(void);
bool CreateButton_No(void);
void OnClick_button_Yes(void);
void OnClick_button_No(void);
};
//+------------------------------------------------------------------+//| Manejo de eventos|//+------------------------------------------------------------------+
EVENT_MAP_BEGIN(CPanelDialogQ)
//+------------------------------------------------------------------+//||//+------------------------------------------------------------------+
ON_EVENT(ON_CLICK,m_button_Yes,OnClick_button_Yes)
ON_EVENT(ON_CLICK,m_button_No,OnClick_button_No)
//+------------------------------------------------------------------+//||//+------------------------------------------------------------------+
EVENT_MAP_END(CAppDialog)
//+------------------------------------------------------------------+//| Constructor|//+------------------------------------------------------------------+
CPanelDialogQ::CPanelDialogQ(void)
{
}
//+------------------------------------------------------------------+//| Destructor|//+------------------------------------------------------------------+
CPanelDialogQ::~CPanelDialogQ(void)
{
}
//+------------------------------------------------------------------+//| Crear|//+------------------------------------------------------------------+bool CPanelDialogQ::CreateQ(constlong chart,conststring name,constint subwin,constint x1,constint y1,constint x2,constint y2,string QText)
{
if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
return(false);
//--- crear controles dependientesif(!CreateLabel_Q_text(QText))
return(false);
if(!CreateButton_Yes())
return(false);
if(!CreateButton_No())
return(false);
//--- tener éxitoreturn(true);
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+//+------------------------------------------------------------------+bool CPanelDialogQ::CreateLabel_Q_text(string QT)
{
//--- coordenadasint x1=INDENT_LEFTQ;
int y1=INDENT_TOPQ;
int x2=ClientAreaWidth()-(INDENT_RIGHTQ+BUTTON_WIDTHQ+CONTROLS_GAP_XQ);
int y2=y1+EDIT_HEIGHTQ;
//--- crearif(!m_Label_Q_text.Create(m_chart_id,"QT",m_subwin,x1,y1,x2,y2))
return(false);
if(!m_Label_Q_text.Text(QT))
return(false);
if(!m_Label_Q_text.FontSize(12))
return(false);
if(!m_Label_Q_text.Color(clrBlack))
return(false);
if(!m_Label_Q_text.ColorBorder(clrBlack))
return(false);
if(!m_Label_Q_text.ColorBackground(clrBlack))
return(false);
// if(!m_edit.ReadOnly(true))// return(false);if(!Add(m_Label_Q_text))
return(false);
m_Label_Q_text.Alignment(WND_ALIGN_WIDTH,INDENT_LEFTQ,0,INDENT_RIGHTQ+BUTTON_WIDTHQ+CONTROLS_GAP_XQ,0);
//--- tener éxitoreturn(true);
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+bool CPanelDialogQ::CreateButton_Yes(void)
{
//--- coordenadasint x1=INDENT_LEFTQ;
int y1=INDENT_TOPQ+CONTROLS_GAP_YQ;
int x2=x1+BUTTON_WIDTHQ;
int y2=y1+BUTTON_HEIGHTQ;
//--- crearif(!m_button_Yes.Create(m_chart_id,m_name+"Yes",m_subwin,x1,y1,x2,y2))
return(false);
if(!m_button_Yes.Text("Yes"))
return(false);
if(!Add(m_button_Yes))
return(false);
m_button_Yes.Alignment(WND_ALIGN_RIGHT,0,0,INDENT_RIGHTQ+CONTROLS_GAP_XQ*2,0);
//--- tener éxitoreturn(true);
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+bool CPanelDialogQ::CreateButton_No(void)
{
//--- coordenadasint x1=INDENT_LEFTQ+CONTROLS_GAP_XQ;
int y1=INDENT_TOPQ+CONTROLS_GAP_YQ;
int x2=x1+BUTTON_WIDTHQ;
int y2=y1+BUTTON_HEIGHTQ;
//--- crearif(!m_button_No.Create(m_chart_id,m_name+"NO",m_subwin,x1,y1,x2,y2))
return(false);
if(!m_button_No.Text("NO"))
return(false);
if(!Add(m_button_No))
return(false);
m_button_No.Alignment(WND_ALIGN_RIGHT,0,0,INDENT_RIGHTQ+CONTROLS_GAP_XQ*1,0);
//--- tener éxitoreturn(true);
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+void CPanelDialogQ::OnClick_button_Yes(void)
{
Print("OnClick_button_Yes", "Last Error: ",GetLastError());
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+void CPanelDialogQ::OnClick_button_No(void)
{
Print("OnClick_button_No", "Last Error: ",GetLastError());
m_button_Yes.Hide();
m_button_Yes.Disable();
m_button_Yes.Deactivate();
}
//+------------------------------------------------------------------+
Está prohibido. El panel está vinculado al gráfico.
Muchas gracias. Ya veo.
¿Puedo hacer una pregunta más, por favor.
Quiero crear un panel para mostrar alguna tabla como esta
Pero sólo puedo encontrar el control de abajo, es que el panel de medios no puede soportar para crear la tabla, gracias.
CLabel
Control, basado en el objeto gráfico "Text label
CBmpButton
Control, basado en el objeto gráfico "Bitmap label
CButton
Control basado en el objeto gráfico "Button
CEdit
Control basado en el objeto gráfico "Edit field
CPanel
Control basado en el objeto gráfico "Rectangle label
CPicture
Control, basado en "Bitmap label".
Muchas gracias. Ya veo.
¿Puedo pedir una pregunta más, por favor.
Quiero crear un panel para mostrar alguna tabla como esta
Pero sólo puedo encontrar el control de abajo, es que el panel de medios no puede soportar para crear la tabla, gracias.
CLabel
Control, basado en el objeto gráfico "Text label
CBmpButton
Control, basado en el objeto gráfico "Bitmap label
CButton
Control basado en el objeto gráfico "Button
CEdit
Control basado en el objeto gráfico "Edit field
CPanel
Control basado en el objeto gráfico "Rectangle label
CPicture
Control, basado en "Bitmap label".
Necesitas construir la tabla tu mismo. Busca ejemplos en Articles y CodeBase.
Tienes que construir la tabla tú mismo. Busca ejemplos en Articles y CodeBase.
Ok, muchas gracias. Creo que si.
Intentaré encontrarlos en Article y codebase.
Gracias de nuevo por tu apoyo .
Estoy tratando de crear una barra de desplazamiento vertical sin vincular al panel, sólo en el gráfico, pero no funciona por alguna razón.
Por ejemplo, con una casilla de verificación, este código reacciona a un clic del ratón. La marca aparece y desaparece.
Pero con un desplazamiento vertical - no hay reacción a los clics del ratón.
¿Pueden decirme quién sabe cómo hacer que este elemento combinado funcione en un gráfico?
¿Puede decirme cómo llamar a un cuadro de diálogo?
Por ejemplo, he creado un panel en el que hay un botón "Cerrar todas las posiciones". Cuando hago clic en este botón, debería aparecer un cuadro "¿Está seguro? Sí/No. ¿Cómo implementar esto?
Actualmente heredando de CAppDialog, he creado un pequeño formulario con botones Ok/Cancel. Al hacer clic en el botón Ok, he añadido una línea
gDialogForm.Destroy(); ChartRedraw();Pero el formulario de diálogo sigue en la pantalla.
¿Cómo solucionarlo?
Por ejemplo, he creado un panel en el que hay un botón "Cerrar todas las posiciones". Cuando hago clic en este botón, debería aparecer un cuadro "¿Está seguro? Sí/No. ¿Cómo implementarlo?
Actualmente heredando de CAppDialog, he creado un pequeño formulario con botones Ok/Cancelar. Al hacer clic en el botón "Ok", he añadido una línea
Pero el formulario de diálogo sigue en la pantalla.
¿Cómo solucionarlo?
Por ejemplo, he creado un panel en el que hay un botón "Cerrar todas las posiciones". Cuando hago clic en este botón, debería aparecer un cuadro "¿Está seguro? Sí/No. ¿Cómo implementarlo?
Actualmente heredando de CAppDialog, he creado un pequeño formulario con botones Ok/Cancelar. Al hacer clic en el botón "Ok", he añadido una línea
Pero el formulario de diálogo sigue en la pantalla.
¿Cómo solucionarlo?
Por ejemplo, he creado un panel en el que hay un botón "Cerrar todas las posiciones". Cuando hago clic en este botón, debería aparecer un cuadro "¿Está seguro? Sí/No. ¿Cómo implementarlo?
Actualmente heredando de CAppDialog, he creado un pequeño formulario con botones Ok/Cancelar. Al hacer clic en el botón "Ok", he añadido una línea
Pero el formulario de diálogo sigue en la pantalla.
¿Cómo solucionarlo?
Tome el ejemplo de ' Close On Chart Panel' e inserte una llamada a 'MessageBox' en los manejadores de clic.
En el fichero 'Close On Chart Panel Dialog.mqh', haga estos cambios:
Resultado:
Hola gracias por su tutorial increíble
Estoy tratando de hacer mi propio , en mi panel haciendo clic en un botón el otro debe ser desactivar y ocultar , será ocultar cuando hago clic en el área del botón oculto todavía funciona
Pongo mis códigos aquí si usted me podría ayudar que sería genial
Indicador:
Clase: