Como posso adicionar o CLabel às guias? Quando crio um item de CLabel e quero adicioná-lo às guias, o compilador apresenta este erro:
CLabel m_overview_titlte_label;
bool CMainPanel::CreateOverviewTitleLabel(conststring text)
{
//--- Passar o objeto do painelm_overview_title_label.WindowPointer(m_window);//--- Anexar à quarta guia do primeiro grupo de guias
m_main_panel_tabs.AddToElementsArray(0,m_overview_title_label);
m_main_panel_tabs.AddToElementsArray(
//--- Coordenadasint x=m_window.X()+OVERVIE_TITLE_LABEL_GAP_X;
int y=m_window.Y()+OVERVIE_TITLE_LABEL_GAP_Y;
//--- Definir propriedades antes da criação
m_overview_title_label.XSize(140);
m_overview_title_label.YSize(18);
//m_overview_title_label.//--- Criar controleif(!m_overview_title_label.Create(m_chart_id,text,m_subwin,x,y))
return(false);
//--- Adicione o objeto à matriz comum de grupos de objetos//CWndContainer::AddToElementsArray(0,m_overview_title_label);return(true);
}
Compiler Error:
'WindowPointer' - função não definida MainPanel.mqh 233 27
'm_overview_title_label' - conversão de parâmetro não permitida MainPanel.mqh 235 43
'm_overview_title_label' - variável do mesmo tipo esperada MainPanel.mqh 235 43
Martin Fischer função como WindowPointer(). Posso criar esses objetos, mas não posso anexá-los à janela.
O não funciona nesse caso...
2.) O CComboBox é um objeto estático. É possível modificar a lista de elementos no
ComboBox-Listview após a criação do ComboBox?
Muito obrigado!
Tive o mesmo problema e resolvi isso criando um arquivo include, escrevendo minha classe de rótulo e usando-a. Você deve criar esse arquivo em Include\EasyAndFastGUI\Controls\MyLabel.mqh
Esse código é:
//+------------------------------------------------------------------+//|MyLabel.mqh//|Copyright 2023, Sassiz.Raiz//|https://t.me/R00T_S4SS12 |//+------------------------------------------------------------------+#property copyright"Copyright 2023, Sassiz.Root"#property link"https://t.me/R00T_S4SS12"#property strict#include "Element.mqh"#include "Window.mqh"//+------------------------------------------------------------------+//| Classe para criar uma caixa de seleção|//+------------------------------------------------------------------+class MyLabel : public CElement
{
private:
//--- Ponteiro para o formulário ao qual o elemento está anexado
CWindow *m_wnd;
//--- Objetos para criar uma caixa de seleção
CLabel m_label;
//--- Texto da caixa de seleçãostring m_label_text;
//--- Margens do rótulo de textoint m_label_x_gap;
int m_label_y_gap;
//--- Cores do rótulo de texto em diferentes estadoscolor m_label_color;
color m_label_color_off;
color m_label_color_hover;
color m_label_color_locked;
color m_label_color_array[];
//--- Prioridades do pressionamento do botão esquerdo do mouseint m_zorder;
int m_area_zorder;
//---public:
MyLabel(void);
~MyLabel(void);
//--- Métodos para criar uma caixa de seleçãobool CreateLabel(constlong chart_id,constint subwin,conststring text,constint x,constint y);
//---private:
bool CreateLabel2(void);
//---public:
//--- (1) Armazena o ponteiro do formulário, (2) retorna/define o estado da caixa de seleçãovoid WindowPointer(CWindow &object) { m_wnd=::GetPointer(object); }
//--- (1) Cor de fundo, (2) margens para o rótulo de textovoid LabelXGap(constint x_gap) { m_label_x_gap=x_gap; }
void LabelYGap(constint y_gap) { m_label_y_gap=y_gap; }
//--- Cor do texto em diferentes estadosvoid LabelColor(constcolor clr) { m_label_color=clr; }
//--- (1) Descrição da caixa de seleção, (2) retornar/definir o estado do botão da caixa de seleçãostring LabelText(void) const { return(m_label.Description()); }
//--- Alterando a corvoid ChangeObjectsColor(void);
//---public:
//--- Manipulador de eventos do gráficovirtualvoid OnEvent(constint id,constlong &lparam,constdouble &dparam,conststring &sparam);
//--- Temporizadorvirtualvoid OnEventTimer(void);
//--- Movendo o elementovirtualvoid Moving(constint x,constint y);
//--- (1) Mostrar, (2) ocultar, (3) redefinir, (4) excluirvirtualvoid Show(void);
virtualvoid Hide(void);
virtualvoid Reset(void);
virtualvoid Delete(void);
//--- (1) Definir, (2) redefinir prioridades do pressionamento do botão esquerdo do mousevirtualvoid SetZorders(void);
virtualvoid ResetZorders(void);
//--- Redefinir a corvirtualvoid ResetColors(void);
virtualvoid SetText(string text);
virtualvoid SetFontSize(int fontSize);
//---private:
//--- Manuseio da pressão sobre o elementobool OnClickLabel(conststring clicked_object);
};
//+------------------------------------------------------------------+//| Construtor|//+------------------------------------------------------------------+
MyLabel::MyLabel(void) :
m_label_x_gap(20),
m_label_y_gap(2),
m_label_color(clrBlack)
{
//--- Armazene o nome da classe do elemento na classe base
CElement::ClassName(CLASS_NAME);
//--- Definir prioridades do clique do botão esquerdo do mouse
m_zorder =0;
m_area_zorder =1;
}
//+------------------------------------------------------------------+//| Destruidor|//+------------------------------------------------------------------+
MyLabel::~MyLabel(void)
{
}
//+------------------------------------------------------------------+//| Tratamento de eventos|//+------------------------------------------------------------------+void MyLabel::OnEvent(constint id,constlong &lparam,constdouble &dparam,conststring &sparam)
{
//--- Tratamento do evento de movimento do cursorif(id==CHARTEVENT_MOUSE_MOVE)
{
//--- Sair, se o elemento estiver ocultoif(!CElement::IsVisible())
return;
//--- Deixar, se os números das subjanelas não corresponderemif(CElement::m_subwin!=CElement::m_mouse.SubWindowNumber())
return;
//--- Verificando o foco sobre o elemento
CElement::MouseFocus(m_mouse.X()>X() && m_mouse.X()<X2() && m_mouse.Y()>Y() && m_mouse.Y()<Y2());
return;
}
//--- Tratamento do clique do botão esquerdo do mouse no objetoif(id==CHARTEVENT_OBJECT_CLICK)
{
//--- Pressionando a caixa de seleçãoif(OnClickLabel(sparam))
return;
}
}
//+------------------------------------------------------------------+//| Temporizador|//+------------------------------------------------------------------+void MyLabel::OnEventTimer(void)
{
//--- Se o formulário não estiver bloqueadoif(!m_wnd.IsLocked())
//--- Alterando a cor dos objetos de elemento
ChangeObjectsColor();
}
//+------------------------------------------------------------------+//| Cria um grupo de objetos de caixa de seleção|//+------------------------------------------------------------------+bool MyLabel::CreateLabel(constlong chart_id,constint subwin,conststring text,constint x,constint y)
{
//--- Sair, se não houver ponteiro de formulárioif(!CElement::CheckWindowPointer(::CheckPointer(m_wnd)))
return(false);
//--- Inicialização de variáveis
m_id =m_wnd.LastId()+1;
m_chart_id =chart_id;
m_subwin =subwin;
m_x =x;
m_y =y;
m_label_text =text;
//--- Margens a partir da borda
CElement::XGap(CElement::X()-m_wnd.X());
CElement::YGap(CElement::Y()-m_wnd.Y());
//--- Criando um elementoif(!CreateLabel2())
return(false);
//--- Ocultar o elemento se a janela for uma janela de diálogo ou estiver minimizadaif(m_wnd.WindowType()==W_DIALOG || m_wnd.IsMinimized())
Hide();
//---return(true);
}
//+------------------------------------------------------------------+//| Cria o rótulo da caixa de seleção|//+------------------------------------------------------------------+bool MyLabel::CreateLabel2(void)
{
//--- Formando o nome do objetostring name=CElement::ProgramName()+"_lable_"+(string)CElement::Id();
//--- Coordenadasint x =CElement::X()+m_label_x_gap;
int y =CElement::Y()+m_label_y_gap;
//--- Cor do texto de acordo com o estadocolor label_color=clrBlack;//(m_check_button_state) ? m_label_color : m_label_color_off;//--- Definir o objetoif(!m_label.Create(m_chart_id,name,m_subwin,x,y))
return(false);
//--- definir propriedades
m_label.Description(m_label_text);
m_label.Font(FONT);
m_label.FontSize(FONT_SIZE);
m_label.Color(label_color);
m_label.Corner(m_corner);
m_label.Anchor(m_anchor);
m_label.Selectable(false);
m_label.Z_Order(m_zorder);
m_label.Tooltip("\n");
//--- Margens a partir da borda
m_label.XGap(x-m_wnd.X());
m_label.YGap(y-m_wnd.Y());
//--- Inicialização da matriz de gradiente
CElement::InitColorArray(label_color,m_label_color_hover,m_label_color_array);
//--- Armazenar o ponteiro do objeto
CElement::AddToArray(m_label);
return(true);
}
//+------------------------------------------------------------------+//| Elementos móveis|//+------------------------------------------------------------------+void MyLabel::Moving(constint x,constint y)
{
//--- Sair, se o elemento estiver ocultoif(!CElement::IsVisible())
return;
//--- Armazenamento de recuos nos campos de elementos
CElement::X(x+XGap());
CElement::Y(y+YGap());
//--- Armazenamento de coordenadas nos campos dos objetos
m_label.X(x+m_label.XGap());
m_label.Y(y+m_label.YGap());
//--- Atualização das coordenadas dos objetos gráficos
m_label.X_Distance(m_label.X());
m_label.Y_Distance(m_label.Y());
}
//+------------------------------------------------------------------+//| Alterar a cor do objeto quando o cursor estiver passando sobre ele//+------------------------------------------------------------------+void MyLabel::ChangeObjectsColor(void)
{
//--- Sair, se o elemento estiver bloqueado//---color label_color=clrBlack;//(m_check_button_state) ? m_label_color : m_label_color_off;
CElement::ChangeObjectColor(m_label.Name(),CElement::MouseFocus(),OBJPROP_COLOR,label_color,m_label_color_hover,m_label_color_array);
}
//+------------------------------------------------------------------+//| Mostra a caixa de combinação|//+------------------------------------------------------------------+void MyLabel::Show(void)
{
//--- Sair, se o elemento já estiver visívelif(CElement::IsVisible())
return;
//--- Tornar todos os objetos visíveisfor(int i=0; i<CElement::ObjectsElementTotal(); i++)
CElement::Object(i).Timeframes(OBJ_ALL_PERIODS);
//--- Estado de visibilidade
CElement::IsVisible(true);
}
//+------------------------------------------------------------------+//| Oculta a caixa de combinação|//+------------------------------------------------------------------+void MyLabel::Hide(void)
{
//--- Sair, se o elemento já estiver visívelif(!CElement::IsVisible())
return;
//--- Ocultar todos os objetosfor(int i=0; i<CElement::ObjectsElementTotal(); i++)
CElement::Object(i).Timeframes(OBJ_NO_PERIODS);
//--- Estado de visibilidade
CElement::IsVisible(false);
}
//+------------------------------------------------------------------+//| Redesenho|//+------------------------------------------------------------------+void MyLabel::Reset(void)
{
//--- Deixar, se este for um elemento suspensoif(CElement::IsDropdown())
return;
//--- Ocultar e mostrar
Hide();
Show();
}
//+------------------------------------------------------------------+//| Exclusão|//+------------------------------------------------------------------+void MyLabel::Delete(void)
{
//--- Remoção de objetos
m_label.Delete();
//--- Esvaziando a matriz dos objetos
CElement::FreeObjectsArray();
//--- Inicialização de variáveis por valores padrão
CElement::MouseFocus(false);
CElement::IsVisible(true);
}
//+------------------------------------------------------------------+//| Definir as prioridades|//+------------------------------------------------------------------+void MyLabel::SetZorders(void)
{
m_label.Z_Order(m_zorder);
}
//+------------------------------------------------------------------+//| Redefinir as prioridades|//+------------------------------------------------------------------+void MyLabel::ResetZorders(void)
{
m_label.Z_Order(0);
}
//+------------------------------------------------------------------+//| Redefinir a cor dos objetos do elemento|//+------------------------------------------------------------------+void MyLabel::ResetColors(void)
{
//--- Redefinir a cor
m_label.Color(clrBlack);
//--- Zerar o foco
CElement::MouseFocus(false);
}
//+------------------------------------------------------------------+//| Clicar no cabeçalho do elemento|//+------------------------------------------------------------------+bool MyLabel::OnClickLabel(conststring clicked_object)
{
//--- O cursor do mouse está atualmente sobre o elemento
m_label.Color(m_label_color_hover);
//--- Enviar uma mensagem sobre isso
::EventChartCustom(m_chart_id,ON_CLICK_LABEL,CElement::Id(),0,m_label.Description());
return(true);
}
//+------------------------------------------------------------------+void MyLabel::SetText(string text){
m_label.Description(text);
}
void MyLabel::SetFontSize(int fontSize){
m_label.FontSize(fontSize);
}
Em seguida, crie um objeto da classe MyLabel como este e use-o:
//---Rótulo
MyLabel m_overview_title_label;
Then:
//+------------------------------------------------------------------+//| Cria o OverviewTitleLabel|//+------------------------------------------------------------------+bool CMainPanel::CreateOverviewTitleLabel(conststring text)
{
//--- Passar o objeto do painel
m_overview_title_label.WindowPointer(m_window);
//--- Anexar à quarta guia do primeiro grupo de guias
m_main_panel_tabs.AddToElementsArray(0,m_overview_title_label);
//--- Coordenadasint x=m_window.X()+OVERVIE_TITLE_LABEL_GAP_X;
int y=m_window.Y()+OVERVIE_TITLE_LABEL_GAP_Y;
//--- Definir propriedades antes da criação
m_overview_title_label.XSize(140);
m_overview_title_label.YSize(18);
m_overview_title_label.SetText(text);
m_overview_title_label.SetFontSize(18);
//m_overview_title_label.//--- Criar controleif(!m_overview_title_label.CreateLabel(m_chart_id,m_subwin,text,x,y))
return(false);
//--- Adicione o objeto à matriz comum de grupos de objetos
CWndContainer::AddToElementsArray(0,m_overview_title_label);
return(true);
}
Se aumentarmos o número de guias, seja na vertical ou na horizontal, não haverá capacidade de rolagem, fazendo com que a janela se estenda além de seus limites e reduzindo sua eficiência.
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Como posso adicionar o CLabel às guias? Quando crio um item de CLabel e quero adicioná-lo às guias, o compilador apresenta este erro:
Compiler Error:
'WindowPointer' - função não definida MainPanel.mqh 233 27
'm_overview_title_label' - conversão de parâmetro não permitida MainPanel.mqh 235 43
Posso criar esses objetos, mas não posso anexá-los à janela.
O
não funciona nesse caso...
2.)
O CComboBox é um objeto estático. É possível modificar a lista de elementos no
ComboBox-Listview após a criação do ComboBox?
Muito obrigado!
Tive o mesmo problema e resolvi isso criando um arquivo include, escrevendo minha classe de rótulo e usando-a. Você deve criar esse arquivo em Include\EasyAndFastGUI\Controls\MyLabel.mqh
Esse código é:
Em seguida, crie um objeto da classe MyLabel como este e use-o:
//---Rótulo MyLabel m_overview_title_label;Then: