// ANTES de conectar o Dialog.mqh!#include <Controls\Defines.mqh>
//--- Esqueça as cores antigas#undef CONTROLS_DIALOG_COLOR_BORDER_LIGHT
#undef CONTROLS_DIALOG_COLOR_BORDER_DARK
#undef CONTROLS_DIALOG_COLOR_BG
#undef CONTROLS_DIALOG_COLOR_CAPTION_TEXT
#undef CONTROLS_DIALOG_COLOR_CLIENT_BG
#undef CONTROLS_DIALOG_COLOR_CLIENT_BORDER
//--- Definir novas cores#define CONTROLS_DIALOG_COLOR_BORDER_LIGHT clrWhite// Cor da borda da caixa de diálogo (externa)#define CONTROLS_DIALOG_COLOR_BORDER_DARK C'0xB6,0xB6,0xB6'// Cor da borda da caixa de diálogo (interna)#define CONTROLS_DIALOG_COLOR_BG clrLightGreen// Plano de fundo da caixa de diálogo (sob a legenda e ao redor da área do cliente)#define CONTROLS_DIALOG_COLOR_CAPTION_TEXT C'0x28,0x29,0x3B'// Cor do texto da legenda da caixa de diálogo#define CONTROLS_DIALOG_COLOR_CLIENT_BG clrAliceBlue// Cor de fundo da área do cliente#define CONTROLS_DIALOG_COLOR_CLIENT_BORDER C'0xC8,0xC8,0xC8'// Cor da área do cliente// Agora conecte#include <Controls\Dialog.mqh>
Você pode me dar um exemplo simples de como o CWndContainer deve ser distorcido para exibir pelo menos algum quadrado na tela de bate-papo usando .Show()?
Tentei de tudo, por exemplo, desta forma, mas não há erro, nem imagem, nem sinal de que .Show() esteja funcionando
Você pode me dar um exemplo simples de como o CWndContainer deve ser distorcido para exibir pelo menos algum quadrado na tela de bate-papo usando .Show()?
Tentei de tudo, por exemplo, desta forma, mas não há erro, nem imagem, nem sinal de que .Show() esteja funcionando.
Por que CWndContainer? O que você deve obter no final?
//+------------------------------------------------------------------+//| Torna o grupo de controles visível//+------------------------------------------------------------------+bool CWndContainer::Show(void)
{
//--- loop por elementos do grupoint total=m_controls.Total();
for(int i=0;i<total;i++)
{
CWnd *control=Control(i);
//--- verificação do ponteiroif(control==NULL)
continue;
control.Show();
}
//--- chamada do método da classe principalreturn(CWnd::Show());
}
E se eu tiver um objeto Button e ele não tiver um método .Show()?
Karputov Vladimir: Por que CWndContainer? O que devemos obter no final?
Um painel com botões de compra e venda e mais algumas notificações sobre o estado do Expert Advisor. Mas ele deve ser arrastado na tela com o mouse, mas o botão não é arrastado.
Evgeny Potapov: Um painel com botões de compra e venda e mais algumas notificações sobre o estado do Expert Advisor. Mas ele deve ser arrastado na tela com o mouse, mas o botão não é arrastado.
Depois de criar um objeto (botão, lista, campo de texto etc.), esse objeto deve ser adicionado ao painel (método Add). Então, ao arrastar o painel, todos os objetos serão movidos junto com o painel.
Karputov Vladimir: Depois de criar um objeto (botão, lista, campo de texto, etc.), esse objeto deve ser adicionado ao painel (método Add). Em seguida, ao arrastar o painel, todos os objetos serão movidos junto com o painel.
Assim?
#include <Controls\Button.mqh>
#include <MyControls\MyWndContainer.mqh>
CButton *MyButton;
CWndContainer *MyContainer;
//+------------------------------------------------------------------+//| Função de inicialização de especialista|//+------------------------------------------------------------------+intOnInit() {
MyButton = new CButton;
if(CheckPointer(MyButton) == POINTER_INVALID) return(INIT_FAILED);
MyButton.Create(ChartID(),WindowExpertName()+"_button",0,50,100,150,250);
MyContainer = new MyWndContainer("MyContainer");
if(CheckPointer(MyContainer) == POINTER_INVALID) return(INIT_FAILED);
MyContainer.Add(MyButton);
MyContainer.Show();
MyContainer.Enable();
return(INIT_SUCCEEDED);
}
Karputov Vladimir: Depois de criar um objeto (botão, lista, campo de texto, etc.), esse objeto deve ser adicionado ao painel (método Add). Então, ao arrastar o painel, todos os objetos serão movidos junto com o painel.
Usando o arquivo PanelDialog2.mqh do artigo como exemplo:
//+------------------------------------------------------------------+//|PanelDialog2.mqh//| Copyright 2015, MetaQuotes Software Corp.//| http://www.mql5.com//+------------------------------------------------------------------+#include <Controls\Dialog.mqh>#include <Controls\CheckGroup.mqh>
#include <Controls\Label.mqh>
#include <Controls\Edit.mqh>
#include <Controls\Button.mqh>
//+------------------------------------------------------------------+//| define|//+------------------------------------------------------------------+//--- recuos e intervalos#define INDENT_LEFT (11) // recuo da esquerda (com tolerância para a largura da borda)#define INDENT_TOP (11) // recuo a partir do topo (com tolerância para a largura da borda)#define INDENT_RIGHT (11) // recuo da direita (com tolerância para a largura da borda)#define INDENT_BOTTOM
Esse arquivo cria os elementos para um painel de diálogo. O símbolo do painel é a classe CDialog.
Classe CDialog
A classe CDialog é uma classe do controle combo Dialog.
Descrição
A classe CDialog foi projetada para combinar visualmente um grupo de elementos heterogêneos relacionados funcionalmente.
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.
Bem, foi isso que fiz, mas nada funciona. O painel continua branco como antes.
O compilador diz Macro redifinition, ou seja, como overdivided....
Siga meu primeiro conselho: substitua as cores no arquivo original e recompile o EA.
Para lembrar como redefini as cores em meu painel, preciso pesquisar, mas não tenho tempo agora.
Para a História:
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação
Por que o painel se afasta ao atualizar as configurações do Expert Advisor?
Andrey Khatimlianskii, 2016.03.10 13:17
Mais ou menos assim:
Você pode me dar um exemplo simples de como o CWndContainer deve ser distorcido para exibir pelo menos algum quadrado na tela de bate-papo usando .Show()?
Tentei de tudo, por exemplo, desta forma, mas não há erro, nem imagem, nem sinal de que .Show() esteja funcionando
Você pode me dar um exemplo simples de como o CWndContainer deve ser distorcido para exibir pelo menos algum quadrado na tela de bate-papo usando .Show()?
Tentei de tudo, por exemplo, desta forma, mas não há erro, nem imagem, nem sinal de que .Show() esteja funcionando.
Não entendo a lógica aqui:
E se eu tiver um objeto Button e ele não tiver um método .Show()?
Ele não pode estar contido em um contêiner?
Por que CWndContainer? O que devemos obter no final?
Um painel com botões de compra e venda e mais algumas notificações sobre o estado do Expert Advisor. Mas ele deve ser arrastado na tela com o mouse, mas o botão não é arrastado.
Depois de criar um objeto (botão, lista, campo de texto, etc.), esse objeto deve ser adicionado ao painel (método Add). Em seguida, ao arrastar o painel, todos os objetos serão movidos junto com o painel.
Assim?
Depois de criar um objeto (botão, lista, campo de texto, etc.), esse objeto deve ser adicionado ao painel (método Add). Então, ao arrastar o painel, todos os objetos serão movidos junto com o painel.
Ou isso não é "adicionar ao painel"?
Então um contêiner não é um painel?
Ou não se trata de "adicionar a um painel"?
Então um contêiner não é um painel?
Usando o arquivo PanelDialog2.mqh do artigo como exemplo:
Esse arquivo cria os elementos para um painel de diálogo. O símbolo do painel é a classe CDialog.
A classe CDialog é uma classe do controle combo Dialog.
Descrição
A classe CDialog foi projetada para combinar visualmente um grupo de elementos heterogêneos relacionados funcionalmente.