@Vladimir Karputov Vladimir por que, ao fechar um painel, os dois painéis se fecham? como evitar isso?
#include <Controls\Dialog.mqh>
CAppDialog AppWindow;
CAppDialog AppWindow2;
intOnInit()
{
//--- criar diálogo de aplicativoif(!AppWindow.Create(0,"AppWindow",0,20,20,360,324))
return(INIT_FAILED);
if(!AppWindow2.Create(0,"AppWindow",0,20+400,20,360+400,324))
return(INIT_FAILED);
//--- executar o aplicativo
AppWindow.Run();
AppWindow2.Run();
return(INIT_SUCCEEDED);
}
voidOnDeinit(constint reason)
{
//--- destruir o diálogo
AppWindow.Destroy(reason);
AppWindow2.Destroy(reason);
}
//+------------------------------------------------------------------+//| Função de evento de gráfico especializado|//+------------------------------------------------------------------+voidOnChartEvent(constint id, // ID do evento constlong& lparam, // parâmetro de evento do tipo longoconstdouble& dparam, // parâmetro de evento do tipo doubleconststring& sparam) // parâmetro de evento do tipo string
{
AppWindow.ChartEvent(id,lparam,dparam,sparam);
AppWindow2.ChartEvent(id,lparam,dparam,sparam);
}
//+------------------------------------------------------------------+
Люди. Граждане! Огромная просьба - заполняйте свой профиль на сайте и пользуйтесь стандартными программами - устанавливайте Skype. У Skype есть очень полезная функция - показ рабочего стола. В таком случае можно оперативно подсказать по возникшей проблеме. Помните - время - деньги! Древняя народная мудрость гласит: если хочешь помочь...
[in] Номер подокна графика. 0 означает главное окно графика. Указанное подокно должно существовать, в противном случае функция возвращает false. Возвращает true при успешной постановке команды в очередь указанного графика, иначе false. Если объект был уже создан ранее, то производится попытка изменить его координаты. При вызове ObjectCreate...
Quando criamos painéis com a biblioteca, como colocamos o painel em um canto diferente do canto superior esquerdo?
Eu tentei usar OBJ_PROP_Corner, mas acho que há uma maneira melhor de usar Panel.Align e Panel.Alignment. Fiz algumas brincadeiras, mas, como não sou programador, não sei quais parâmetros passar e como passá-los. Por exemplo, Panel.Alignment(CRect &rect), o que significam essas coisas Rect?
Quando criamos painéis com a biblioteca, como colocamos o painel em um canto diferente do canto superior esquerdo?
Eu tentei usar o OBJ_PROP_Corner, mas acho que há uma maneira melhor de usar Panel.Align e Panel.Alignment. Fiz algumas brincadeiras, mas, como não sou programador, não sei quais parâmetros passar e como passá-los. Por exemplo, o Panel.Alignment(CRect &rect), o que significam essas coisas Rect?
Qualquer esclarecimento é muito bem-vindo
Parabéns
Diego
No momento da criação do painel, indicamos as coordenadas. Exemplo para o arquivo AppWindowEditDefine.mq5
//+------------------------------------------------------------------+//| Função de inicialização especializada|//+------------------------------------------------------------------+intOnInit()
{
***
//--- criar caixa de diálogo do aplicativoif(!ExtDialog.Create(0,"AppWindow Edit Define",0,40,40,380,344))
return(INIT_FAILED);
//--- executar o aplicativo
Percebi que, muitas vezes, a função *.Destroy() simplesmente não funciona. Ela deixa os objetos no gráfico depois que a função Expert Deinit() é chamada, especialmente quando os períodos de tempo mudam rapidamente.
Uma solução simples é usar ponteiros, em vez de criar, modificar e destruir diretamente o objeto CAppDialog.
CAppDialog *AppWindow;//Declare CAppDialog pointer
AppWindow = new CAppDialog();//Create new CAppDialog object at ptr address
AppWindow.Destroy(...);//Destroy Window object(s)
delete AppWindow;//Set the "delete" flag for objects at the ptr address (in case *.Destroy() fails)
AppWindow = NULL;//Set the ptr address to NULL
Depois de criar minha classe de janela personalizada, eu também crio e destruo todos os botões, painéis e outros objetos como este. Funciona muito bem!
*Nota: Definir o sinalizador de exclusão e o ponteiro como NULL pode ser um exagero, mas não tive objetos sobrando desde a implementação.
Vladimir por que, ao fechar um painel, os dois painéis se fecham? como evitar isso?
Defina nomes diferentes para cada janela - AppWindow e AppWindow1 etc.
elas já têm nomes diferentes
Alterar a string
não faz nada.
Ou você quer dizer outra coisa?
*** Como evitar isso?
Um consultor - um painel.
Por exemplo, em cima de uma linha:
Como fazer com que um painel fique em cima de objetos criados posteriormente ao próprio painel?
Por exemplo, sobre uma linha:
Não crie objetos gráficos depois que o painel for criado.
Ou recolher/expandir o painel.Olá, pessoal,
Pergunta de um aluno que aprende sozinho!
Quando criamos painéis com a biblioteca, como colocamos o painel em um canto diferente do canto superior esquerdo?
Eu tentei usar OBJ_PROP_Corner, mas acho que há uma maneira melhor de usar Panel.Align e Panel.Alignment. Fiz algumas brincadeiras, mas, como não sou programador, não sei quais parâmetros passar e como passá-los. Por exemplo, Panel.Alignment(CRect &rect), o que significam essas coisas Rect?
Qualquer esclarecimento é muito bem-vindo
Parabéns
Diego
Olá pessoal,
Pergunta de um aluno que aprende sozinho!
Quando criamos painéis com a biblioteca, como colocamos o painel em um canto diferente do canto superior esquerdo?
Eu tentei usar o OBJ_PROP_Corner, mas acho que há uma maneira melhor de usar Panel.Align e Panel.Alignment. Fiz algumas brincadeiras, mas, como não sou programador, não sei quais parâmetros passar e como passá-los. Por exemplo, o Panel.Alignment(CRect &rect), o que significam essas coisas Rect?
Qualquer esclarecimento é muito bem-vindo
Parabéns
Diego
No momento da criação do painel, indicamos as coordenadas. Exemplo para o arquivo AppWindowEditDefine.mq5
Percebi que, muitas vezes, a função *.Destroy() simplesmente não funciona. Ela deixa os objetos no gráfico depois que a função Expert Deinit() é chamada, especialmente quando os períodos de tempo mudam rapidamente.
Uma solução simples é usar ponteiros, em vez de criar, modificar e destruir diretamente o objeto CAppDialog.
As funções acima agora se tornam isto:
Depois de criar minha classe de janela personalizada, eu também crio e destruo todos os botões, painéis e outros objetos como este. Funciona muito bem!
*Nota: Definir o sinalizador de exclusão e o ponteiro como NULL pode ser um exagero, mas não tive objetos sobrando desde a implementação.