Discussão do artigo "Interfaces gráficas X: Ordenação, reconstrução da tabela e controles nas células (build 11)" - página 4
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
1. Quando você terminar de criar uma interface gráfica para seu aplicativo MQL em desenvolvimento, ao preenchê-lo com alguma funcionalidade de negociação, talvez seja necessário inicializar os valores do programa quando ele for carregado/recarregado. Este é apenas um exemplo, pois ele deve funcionar a partir da classe CProgram personalizada. Mostrarei alguns exemplos mais substanciais mais tarde, quando terminar de desenvolver a biblioteca. A segunda etapa será concluída em breve e será possível apresentar exemplos reais de aplicativos MQL usando essa biblioteca.
2. O formulário também deve ter propriedades de extensão semelhantes definidas.
3. Sim, obrigatório.
//---
P.S. No momento, a versão mais recente da biblioteca está neste artigo: GUIs X: Seleção de texto em um campo de entrada de várias linhas (versão 13).
Obrigado, a propósito, notei um erro de estouro de matriz, se você selecionar a última linha no exemplo 11_01 e excluir, por exemplo, a primeira linha e, em seguida, selecionar a última linha novamente, você obtém:
2017.04.19 20:27:52.564 TestLibrary11_01 (RUAL,H1) array out of range in 'CanvasTable.mqh' (1897,19)
Mais uma pergunta: qual método é usado para alterar a etapa de toque nos controles deslizantes de rolagem, pois a etapa padrão é muito pequena?
1. obrigado, a propósito, notei um erro de estouro de matriz, se no exemplo 11_01 selecionar a última linha e excluir, por exemplo, a primeira linha e, em seguida, selecionar a última linha novamente, obteremos: 2017.04.19 20:27:52.564 TestLibrary11_01 (RUAL,H1) array out of range in 'CanvasTable.mqh' (1897,19)
2. Outra pergunta: qual método é usado para alterar a etapa de toque nos controles deslizantes de rolagem, porque a etapa padrão é muito pequena?
1. Vou verificar e corrigir na próxima atualização.
2. Ainda não implementado. Farei isso.
Se apenas a funcionalidade da tabela for necessária e a vinculação ao formulário CWindow for obrigatória, é possível não ativar:
1. controles de menu
2. Botão para excluir o formulário
3. Como atualizar os valores das células na tabela? (pergunta removida, eu vi o parâmetro redraw no método SetValue) :))
4. Não está muito claro o método SetValue(const uint column_index,const uint row_index,const string value="",const uint digits=0,const bool redraw=false), por que a divisão em tipo de cadeia de caracteres de dados armazenados e reais? Na minha opinião, é melhor armazenar a cadeia de caracteres na tabela. Mas, se for necessário, é melhor criar dois métodos taticamente.
Não consegui entender o uso do método OnInitEvent, vou esperar por exemplos.
Se apenas a funcionalidade da tabela for necessária e a vinculação ao formulário CWindow for obrigatória, é possível não ativar:
1. controles de menu
2. Botão para excluir o formulário
3. Como atualizar os valores das células na tabela?
Não consegui entender o uso do método OnInitEvent, vou esperar por exemplos.
1. Na classe de usuário do aplicativo MQL CProgram, você mesmo constrói a interface gráfica. Portanto, se você não precisar do menu principal, simplesmente não crie esses elementos nessa classe.
2. Não. Esse é um botão obrigatório no formulário. Você não pode remover acidentalmente o aplicativo do gráfico clicando nele, pois é exibida uma janela para confirmar essa ação.
3. Consulte o exemplo neste artigo: Interfaces gráficas X: Atualizações na tabela desenhada e otimização de código (build 10). Em resumo, use o método CCanvasTable::SetValue().
1. Na classe de usuário do aplicativo MQL CProgram, você mesmo constrói a interface gráfica. Portanto, se você não precisar do menu principal, simplesmente não crie esses elementos nessa classe.
2. Não. Esse é um botão obrigatório no formulário. Você não pode remover acidentalmente o aplicativo do gráfico clicando nele, pois será exibida uma janela para confirmar essa ação.
3. Consulte o exemplo neste artigo: Interfaces gráficas X: Atualizações na tabela desenhada e otimização de código (build 10). Em resumo, use o método CCanvasTable::SetValue().
No ponto 2, faça uma seleção de botões para o formulário, até mesmo o MessageBox tem conjuntos de botões personalizáveis. No Qt, também é possível alterar os conjuntos desses botões e, na biblioteca padrão MetaQuotes, eles também podem ser alterados.
...
4. O método SetValue(const uint column_index,const uint row_index,const string value="",const uint digits=0,const bool redraw=false) não está muito claro, por que a divisão em tipo de cadeia de caracteres de dados armazenados e reais? Na minha opinião, é melhor armazenar a cadeia de caracteres na tabela. Mas, se for necessário, é melhor criar dois métodos taticamente.
Com relação ao ponto 2, escolha os botões para o formulário, até mesmo o MessageBox tem conjuntos de botões personalizáveis. No Qt, também é possível alterar os conjuntos desses botões e, na biblioteca padrão MetaQuotes, eles também podem ser alterados.
No momento, os botões são:
O que mais você precisa?
Agora há botões:
O que mais você precisa?
Estou falando sobre eles, que esse conjunto deve ser alterado, pois nem sempre você precisa de todos esses três botões))
Não entendo o tipo de dados. Todos eles são armazenados como string. O tipo de dados é especificado para cada coluna usando o método DataType() para classificação. E o parâmetro digits no método SetValue() permite que você especifique o número de dígitos após o separador para cada célula separadamente.
))) Agora entendo, mas o DataType( ) por padrão tem que tipo? Ou não há um estado padrão e é necessário determinar o tipo do valor armazenado antes de adicioná-lo à célula?
PS. Esqueci de escrever que nem sempre as imagens de recursos são carregadas no menu, embora possa ser porque estou sentado em uma virtualização.
Estou falando sobre eles, que esse conjunto deve ser alterado, você nem sempre precisa de todos esses três botões ))
2 e 3 já podem ser deixados de lado. No método de criação de formulário na classe de usuário CProgram , não chame métodos: