Bibliotecas: EasyAndFastGUI - biblioteca para criar interfaces gráficas do usuário - página 11
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
Inicialmente, simplesmente não havia essa tarefa de que, após a criação da GUI, era necessário mover os elementos. Tudo foi baseado na ideia de que cada elemento já tinha todo o comportamento necessário implementado.
Perguntas contrárias: Por que você precisa mover elementos? O que você quer fazer? Que comportamento você deseja obter ao interagir com a GUI?
Para saber se algo vai quebrar, você precisa testar todos os elementos após cada alteração nas classes de base. Já é difícil dizer isso imediatamente. Já faz algum tempo que não estou pesquisando a fundo.
Crie uma GUI de teste com todos os elementos da biblioteca e teste-os após as alterações.
Por exemplo, listas expansíveis. Quando você clica, alguns dos elementos ficam ocultos, e tudo o que está abaixo é puxado para cima. E vice-versa.
Testar a GUI é uma boa ideia, vou ter que tentar criá-la :)
A propósito, no mesmo CElement::Moving.
Se houver um vínculo, o elemento se moverá junto com a tela. Portanto, teoricamente, nada deve quebrar :)
Alguém já tentou criar uma caixa de combinação usando essa biblioteca para alterar os elementos nela? ????? Share Como você faz isso?
Eu crio uma caixa de combinação e tudo funciona. Em seguida, eu a preencho com elementos usando a seguinte função:
Tudo funciona. Depois que seleciono na combobox preenchida - por exemplo, o terceiro valor - e clico no botão, o resultado é uma série de ações que resultam no transbordamento da combobox. E eu a preencho novamente com um valor (por exemplo, inicialmente havia 20 itens nela, mas depois de clicar no botão, resta apenas um item!)
E aqui vem um erro interessante - depois que tudo é sobrescrito (usando a função acima) - tento abrir a caixa de combinação, mas não consigo, porque o erro Array out of range!
O erro ocorre no método:
void CListView::RedrawItemsByMode(const bool is_selected_item=false).
Na linha 1364. Como descobri pesquisando, isso ocorre porque:
1) ao selecionar o terceiro item da lista (antes de pressionar o botão) - a variável
m_prev_item_index_focus é preenchida com um índice igual a 3.
Em seguida, esse índice é passado por meio da variável prev_item_index para a matriz
indexes
na linha 1357. O resultado disso - na linha 1364 - é a seleção de um valor da matriz
m_items
no índice #2 (índice correspondente ao último elemento selecionado), enquanto a matriz (m_items) tem apenas um valor no índice #0.
Estou pesquisando pelo segundo dia e ainda não consegui encontrar o local onde o valor da variável
m_prev_item_index_focus seria redefinido para zero.
Logicamente, ele deveria ser limpo no método Clear da classe CListView, que usei para limpar todos os itens, mas infelizmente não consegui encontrar esse método....
Em relação a todas as perguntas acima:
1) É um bug na biblioteca ou estou atualizando os valores incorretamente?
2) Qual é a melhor maneira de contornar esse problema?
Até agora, todas as soluções que encontrei se resumem a editar o código da biblioteca (adicionando novas 3 linhas de código) - mas não gosto da ideia de ajustar o código de outra pessoa...
Código mínimo reproduzível para minha pergunta:
...
Até agora, todas as soluções que encontrei se resumem à edição do código da biblioteca (adição de novas 3 linhas de código), mas não gosto da ideia de ajustar o código de outra pessoa...
Obrigado pela mensagem.
Tente fazer uma pequena adição ao método da classe CListView. Você precisa zerar os campos auxiliares, conforme indicado abaixo:
Obrigado pela mensagem.
Tente fazer uma pequena adição ao método da classe CListView. Você precisa zerar os campos auxiliares, conforme indicado abaixo:
Obrigado por sua resposta.
Que tal um repositório no bitbucket e aceitar commits de usuários ativos da biblioteca?
Juntos, terminaremos o projeto mais rápido ;)
Você pode me dizer como lidar corretamente com o botão de fechar a janela?
O problema é o seguinte: coloco um Expert Advisor (por exemplo, ExampleEAF.ex5) e meu indicador em uma janela separada sob o gráfico (o código mínimo exibe apenas uma janela vazia). Em seguida, clico no botão fechar janela em qualquer um desses aplicativos e ambos são fechados (removidos do gráfico).
Esse comportamento não é totalmente correto. Existe alguma maneira de distinguir eventos para diferentes aplicativos que trabalham simultaneamente no mesmo gráfico? Há uma suspeita de que outros eventos também possam se sobrepor.
Que tal um repositório no bitbucket e aceitar commits de usuários ativos da biblioteca?
Juntos, terminaremos o projeto mais rápido ;)
Já me deram acesso. Tenho dúvidas sobre muitas das edições.
Não há justificativa para essas ou aquelas alterações. É mais fácil discutir isso aqui no fórum.
Se alguma alteração for feita, é necessário dar exemplos e resultados de testes com a explicação de por que ela será melhor.
Você pode me dizer como lidar corretamente com o botão de fechar a janela?
O problema é o seguinte: coloco um Expert Advisor (por exemplo, ExampleEAF.ex5) e meu indicador em uma janela separada sob o gráfico (o código mínimo exibe apenas uma janela vazia). Em seguida, clico no botão fechar janela em qualquer um desses aplicativos e ambos são fechados (removidos do gráfico).
Esse não é o comportamento correto. Existe alguma maneira de distinguir eventos para diferentes aplicativos que trabalham simultaneamente no mesmo gráfico? Suspeito que outros eventos também possam se sobrepor.
Vou testá-lo quando tiver tempo e relatarei o resultado aqui.
Andrey Khatimlianskii:
Как на счет репозитория на битбакете и принятия коммитов от активных пользователей библиотеки?
Вместе быстрее допилим ;)
Anatoli Kazharski:
...
Se alguma alteração for feita, é necessário dar exemplos e resultados de testes com uma explicação de por que seria melhor.
Pelo menos de forma breve. Por exemplo:
Correções na classe CListView. No método Clear(), precisamos zerar alguns campos auxiliares para evitar que outros métodos da classe saiam da matriz.