Se precisar dela com urgência, você mesmo poderá adicionar as seguintes alterações:
1. No arquivo Defines.mqh, adicione um novo identificador:
#define ON_CLICK_TAB (26) // Guia Alternar
//---
2. Nas classes CTabs e CIconTabs (arquivos Tabs.mqh e IconTabs.mqh), no método ShowTabElements(), adicione uma linha conforme mostrado na listagem abaixo:
//+------------------------------------------------------------------+//| Mostra apenas os itens da guia selecionada//+------------------------------------------------------------------+void CTabs::ShowTabElements(void)
{
//--- Sair se as guias estiverem ocultasif(!CElement::IsVisible())
return;
//--- Verificando o índice da guia selecionada
CheckTabIndex();
//---for(int i=0; i<m_tabs_total; i++)
{
//--- Obter o número de itens anexados à guiaint tab_elements_total=::ArraySize(m_tab[i].elements);
//--- Se essa guia estiver destacadaif(i==m_selected_tab)
{
//--- Mostrar itens da guiafor(int j=0; j<tab_elements_total; j++)
m_tab[i].elements[j].Show();
}
//--- Ocultar elementos de guias inativaselse
{
for(int j=0; j<tab_elements_total; j++)
m_tab[i].elements[j].Hide();
}
}
//--- Enviar uma mensagem sobre isso
::EventChartCustom(m_chart_id,ON_CLICK_TAB,CElement::Id(),m_selected_tab,"");
}
//---
3) Agora o evento com o identificador ON_CLICK_TAB pode ser aceito no manipulador da classe personalizada.
Exemplo:
//+------------------------------------------------------------------+//| Manipulador de eventos gráficos|//+------------------------------------------------------------------+void CProgram::OnEvent(constint id,constlong &lparam,constdouble &dparam,conststring &sparam)
{
//--- Evento de pressionamento da guiaif(id==CHARTEVENT_CUSTOM+ON_CLICK_TAB)
{
//--- Se você pressionou o botão de rádioif(m_tabs.SelectedTab()==0)
{
switch(m_radio_buttons1.SelectedButtonIndex()){
case0:
m_canvas_table1.Show();
m_canvas_table11.Hide();
m_canvas_table111.Hide();
ModifyCanvasTable1(0);
break;
case1:
m_canvas_table1.Hide();
m_canvas_table11.Show();
m_canvas_table111.Hide();
ModifyCanvasTable1(1);
break;
case2:
m_canvas_table1.Hide();
m_canvas_table11.Hide();
m_canvas_table111.Show();
ModifyCanvasTable1(2);
break;
}
return;
}
return;
}
}
Obrigado, está funcionando. Encontrei mais um erro: iniciamos a ferramenta, afastamos o painel e começamos a pressionar os botões de rádio. Quando a tabela é desenhada, a princípio ela começa a ser desenhada a partir da borda esquerda e, em seguida, é puxada para as coordenadas necessárias.
Alexey Oreshkin: Obrigado, está funcionando. Encontrei mais um erro: iniciamos a ferramenta, afastamos o painel e começamos a pressionar os botões de rádio. Quando a tabela é desenhada, a princípio ela começa a ser desenhada a partir da borda esquerda e, em seguida, é puxada para as coordenadas necessárias.
Sim, isso existe. Usando esse tipo de tabela como exemplo, adicione uma linha ao método CCanvasTable::Show() no arquivo CanvasTable.mqh, conforme mostrado abaixo:
//+------------------------------------------------------------------+//|| Mostra o elemento|//+------------------------------------------------------------------+void CCanvasTable::Show(void)
{
//--- Sair se o item já estiver visívelif(CElement::IsVisible())
return;
//--- Tornar todos os objetos visíveis
m_area.Timeframes(OBJ_ALL_PERIODS);
m_canvas.Timeframes(OBJ_ALL_PERIODS);
m_scrollv.Show();
m_scrollh.Show();
//--- Status de visibilidade
CElement::IsVisible(true);
//--- Movendo um item
Moving(m_wnd.X(),m_wnd.Y());
}
//---
Se esse problema ocorrer com outros itens, adicione a mesma linha ao método Show() deles. Todas as classes de elementos terão essa correção na próxima atualização.
Olá, estou acompanhando seu trabalho e estou muito grato.
Você já desenvolveu ou viu algo que possa funcionar com Tabulações ou Foco em Controles no formulário.
Preciso alterar as edições depois de inserir uma entrada em um CEdit ou CSpinEdit e pressionar Enter ou TAB, quero passar para o próximo Edit, para melhor usabilidade em meu programa.
Você pode me ajudar ou me indicar onde procurar?
Muito obrigado por sua contribuição para a comunidade.
Você já desenvolveu ou viu algo que possa funcionar com Tabulações ou Foco em controles no formulário.
Preciso alterar as edições depois de inserir uma entrada em um CEdit ou CSpinEdit e pressionar Enter ou TAB, quero passar para o próximo Edit, para melhorar a usabilidade do meu programa.
No momento, isso não é possível. Vou pensar em como implementá-lo.
Anatoli Kazharski: No momento, isso não é possível. Vou pensar em como implementá-lo.
Anatoli Kazharski, estou pensando nisso. Existe alguma maneira de ativar o modo Edition por meio de código, da mesma forma que quando eles não são ReadOnly e clicamos duas vezes no CEdit e eles ficam azuis e selecionados. Ou, de alguma forma, posso solicitar uma entrada por splash, caixa de mensagem ou qualquer janela solicitada automaticamente quando executo o código.
Estou pensando em algumas possibilidades, e realmente não quero usar DLL, ainda não sou tão profissional. Mas tenho muita vontade. Se você me der algumas orientações ou idéias, poderei realmente aprimorar nosso código.
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.
Quando esperar a atualização?
Se precisar dela com urgência, você mesmo poderá adicionar as seguintes alterações:
1. No arquivo Defines.mqh, adicione um novo identificador:
//---
2. Nas classes CTabs e CIconTabs (arquivos Tabs.mqh e IconTabs.mqh), no método ShowTabElements(), adicione uma linha conforme mostrado na listagem abaixo:
//---
3) Agora o evento com o identificador ON_CLICK_TAB pode ser aceito no manipulador da classe personalizada.
Exemplo:
Encontrei mais um erro: iniciamos a ferramenta, afastamos o painel e começamos a pressionar os botões de rádio. Quando a tabela é desenhada, a princípio ela começa a ser desenhada a partir da borda esquerda e, em seguida, é puxada para as coordenadas necessárias.
Obrigado, está funcionando.
Encontrei mais um erro: iniciamos a ferramenta, afastamos o painel e começamos a pressionar os botões de rádio. Quando a tabela é desenhada, a princípio ela começa a ser desenhada a partir da borda esquerda e, em seguida, é puxada para as coordenadas necessárias.
Sim, isso existe. Usando esse tipo de tabela como exemplo, adicione uma linha ao método CCanvasTable::Show() no arquivo CanvasTable.mqh, conforme mostrado abaixo:
//---
Se esse problema ocorrer com outros itens, adicione a mesma linha ao método Show() deles. Todas as classes de elementos terão essa correção na próxima atualização.
Você já desenvolveu ou viu algo que possa funcionar com Tabulações ou Foco em Controles no formulário.
Preciso alterar as edições depois de inserir uma entrada em um CEdit ou CSpinEdit e pressionar Enter ou TAB, quero passar para o próximo Edit, para melhor usabilidade em meu programa.
Muito obrigado por sua contribuição para a comunidade.
Você já desenvolveu ou viu algo que possa funcionar com Tabulações ou Foco em controles no formulário.
Preciso alterar as edições depois de inserir uma entrada em um CEdit ou CSpinEdit e pressionar Enter ou TAB, quero passar para o próximo Edit, para melhorar a usabilidade do meu programa.
No momento, isso não é possível. Vou pensar em como implementá-lo.
Ou, de alguma forma, posso solicitar uma entrada por splash, caixa de mensagem ou qualquer janela solicitada automaticamente quando executo o código.
Estou pensando em algumas possibilidades, e realmente não quero usar DLL, ainda não sou tão profissional. Mas tenho muita vontade. Se você me der algumas orientações ou idéias, poderei realmente aprimorar nosso código.
Caro Anatoli, muito obrigado por seu esforço!
Gostaria apenas de salientar que há um erro de digitação no MenuItem.mqh, linha 237, que impede que ele seja compilado com êxito:
" > The type of the menu item can be set using the CMenuItem::TypeMenuItem()") method");deve ser lido em vez disso
" > The type of the menu item can be set using the CMenuItem::TypeMenuItem() method");certo?
O Edit está sempre piscando.
https://www.mql5.com/en/forum/274301