Discussão do artigo "Interfaces Gráficas IX: Os Controles Barra de Progresso e Gráfico de Linha (Capítulo 2)" - página 2
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
Por quê?
Declare os TIPOS de dados no início do programa e, depois disso, inicie os valores das variáveis dos tipos que você declarou.
m_progress_bar.Update(i,total); não é nada. Que tamanho de barra ele deve mostrar?
Declare os TIPOS de dados no início do programa e, depois disso, inicie os valores das variáveis dos tipos que você declarou.
...
m_progress_bar.Update(i,total); não é nada. Que tamanho de barra deve ser exibido?
double new_width=(m_current_index/m_steps_total)*m_bar_bg.XSize();Assim ...assim ...
1. Declaração de tipo de dados.
2. Atribuição de um valor a uma variável desse tipo.
Se a soma não bater, então - você bagunçou alguma coisa.
Regras para entrar em uma sala:
1. Granada.
2. rifle automático.
3. Я.
O principal é não misturar as coisas.
1. Declaração do tipo de dados.
2. Atribuição de um valor a uma variável desse tipo.
Se a soma não bater, então - você bagunçou alguma coisa.
Regras para entrar em uma sala:
1. Granada.
2. rifle automático.
3. Я.
O principal é não misturar as coisas.
Talvez suas palavras sejam sábias demais para minha mente em férias....
Por que zuid-zuid-west?
Anatoly, peço desculpas por ser intrusivo, mas gostaria de saber como é possível atualizar a barra de progresso dentro de um loop com cálculos pesados.
Por exemplo, temos uma barra de progresso m_progress_bar, temos um loop dentro do CProgram
Você poderia explicar em um exemplo tão "abstrato" o que não estou entendendo?
Talvez esses cálculos pesados sejam tão longos que o programa não consiga sair da função Func()? É por isso que a barra de progresso não é atualizada? Talvez haja um loop perpétuo?
Cada elemento tem os métodos Show() e Hide() para controlar sua visibilidade.
m_progress_bar.Hide(); // não oculta a barra de progresso por algum motivo, tenho que ocultá-la em outro objeto gráfico.//---
Em geral, é difícil dizer algo sobre um bloco de código retirado do contexto. Um exemplo de trabalho com uma barra de progresso em que tudo funciona é mostrado no artigo: GUIs X: Updates for Easy And Fast library (build 2).
Melhor ainda, anexe um código mínimo para reprodução. Essa é a maneira mais rápida de obter uma dica. Um diagrama simples é suficiente para a reprodução:
O botão na janela principal abre a caixa de diálogo. O botão na caixa de diálogo inicia "cálculos pesados".
Provavelmente esses cálculos pesados são tão longos que o programa não consegue sair do Func()? É por isso que a barra de progresso não é atualizada? Talvez haja um loop perpétuo ali?
Cada elemento tem os métodos Show() e Hide() para controlar sua visibilidade.
//---
Em geral, é difícil dizer algo sobre um bloco de código retirado do contexto. Um exemplo de trabalho com uma barra de progresso em que tudo funciona é mostrado no artigo: GUIs X: Updates for Easy And Fast library (build 2).
Sim, Anatol, ele funciona em seus exemplos, é claro. Mas é apenas um exemplo, é apenas uma decoração. A barra de progresso, o exemplo de sua atualização, é feita em um cronômetro com valores abstratos.
Quando eu começo a fazer isso não em um cronômetro com valores hipotéticos, mas em um loop longo regular dentro do programa, não em um cronômetro, a barra de progresso não é atualizada durante o loop, ela é mostrada já atualizada quando é mostrada novamente.
Você poderia dar um exemplo de como trabalhar com a barra de progresso no programa principal em algum loop? Por exemplo, em um loop como este:
Seria interessante ver a operação correta com a barra de progresso, não da maneira que eu acho que deveria ser.
Sim, Anatole, em seus exemplos isso funciona, é claro. Mas eles são apenas um exemplo, uma farsa. A barra de progresso, o exemplo de sua atualização, é feita em um cronômetro com valores abstratos.
Quando eu começo a fazer isso, não em um cronômetro com valores hipotéticos, mas em um loop longo regular dentro do programa, não em um cronômetro, a barra de progresso não é atualizada durante o loop, ela é mostrada já atualizada quando é mostrada novamente.
Talvez ChartRedraw() possa ajudar?
Sim, obrigado, m_chart.Redraw() ajudou:
Capturas de tela da plataforma de negociação MetaTrader
KBR, D1, 2016.08.22.
Just2Trade Online Ltd, MetaTrader 5, Demonstração