Discussão do artigo "Interfaces Gráficas VIII: O Controle Navegador de Arquivos (Capítulo 3)" - 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
Anatoly, essa é, em minha opinião, a melhor implementação da biblioteca gui no mql que já vi aqui.
Agora, estou procurando como "parafusá-la" em meu EA. Tudo é suficiente, exceto por duas coisas:
1) não há uma tabela com controles dentro de células individuais (caixas de seleção, botões, ...).
2) Não consigo "entender" como criar uma janela com conteúdo dinâmico.
Em princípio, para os itens 1 e 2, está claro que você precisa criar uma nova classe como uma extensão da CTable. Mas com a 2) é um mistério. Vamos supor que em diferentes momentos do trabalho do Consultor especialista seja aberta uma janela de diálogo, na qual, dependendo das condições atuais, pode haver um número diferente de caixas de seleção. Se o número de caixas de seleção aumentar na próxima vez em que a janela for aberta, fica claro como isso é feito. Mas se o número de caixas de seleção diminuir, como fazer isso? Se eu entendi corretamente, é necessário "matar" alguns dos controles "inscritos" nessa janela, mas no CWndContainer não há métodos para destruir itens, apenas métodos para adicionar. Você pode me dizer como fazer isso, se for possível nesta versão da biblioteca?
Anatoly, essa é, em minha opinião, a melhor implementação da biblioteca gui no mql que já vi aqui.
Agora, estou procurando como "parafusá-la" em meu EA. Tudo é suficiente, exceto por duas coisas:
1) não há uma tabela com controles dentro de células individuais (caixas de seleção, botões, ...).
2) Não consigo "entender" como criar uma janela com conteúdo dinâmico.
Em princípio, para os itens 1 e 2, está claro que você precisa criar uma nova classe como uma extensão da CTable. Mas com a 2) é um mistério. Vamos supor que em diferentes momentos do trabalho do Consultor especialista seja aberta uma janela de diálogo, na qual, dependendo das condições atuais, pode haver um número diferente de caixas de seleção. Se o número de caixas de seleção aumentar na próxima vez em que a janela for aberta, fica claro como isso é feito. Mas se o número de caixas de seleção diminuir, como fazer isso? Se eu entendi corretamente, é necessário "matar" alguns dos controles "inscritos" nessa janela, mas no CWndContainer não há métodos para destruir itens, apenas métodos para adicionar. Você pode me dizer como fazer isso, se for possível nesta versão da biblioteca?
Obrigado por suas sugestões interessantes.
Sim, não há soluções prontas para essa versão no momento. Vejo a necessidade de tais recursos, por isso os adicionei ao plano de implementação.
Sobre o segundo ponto. Se você precisar de uma lista dinâmica de caixas de seleção, é mais fácil criar mais uma classe de um item como CCheckboxList com métodos para adicionar e remover itens da matriz (lista) depois que o item for criado. A propósito, também planejamos adicionar esse recurso a todos os tipos de listas e tabelas.
Sobre o segundo ponto. Se você precisar de uma lista dinâmica de caixas de seleção, uma maneira mais simples é criar outra classe de um elemento do tipo CCheckboxList com métodos para adicionar e remover elementos da matriz (lista) depois que o elemento for criado. A propósito, também está planejado adicionar esse recurso a todos os tipos de listas e tabelas.
Podemos criar várias guias com diferentes conjuntos de caixas de seleção e exibir a desejada?
Se os conjuntos forem predefinidos, essa opção é adequada.
Já é possível criar guias: GUIs VII: elementos "Tabs" (Capítulo 2) >>>
Se os conjuntos forem predefinidos desde o início, essa opção é adequada.
Já é possível criar guias: GUIs VII: Elementos de guia (Capítulo 2) >>>.
Essa foi uma dica para o autor da pergunta)
Bem, e uma pequena pergunta - é possível ativar uma guia programaticamente.
...
Bem, e uma pequena pergunta: é possível ativar a guia programaticamente?
Em uma classe personalizada, ao criar uma interface antes de criar um elemento:
//---
Isso é suficiente? Ou é necessário poder alternar as guias programaticamente depois que o elemento é criado no processo de trabalho?
Seria desejável adicionar esse recurso...
algo como:
Tornarei possível ativar uma guia especificando seu índice depois que ela for criada.
De fato, há casos em que isso pode ser necessário. Tive algumas ideias em que a ativação de uma guia poderia ser automática. )
Como ajustar o tamanho do navegador ao tamanho da janela em que o navegador é exibido?
Por exemplo: o tamanho da janela é 450. Como posso ajustar o navegador na janela de modo que haja recuos de 2 pixels à direita e à esquerda?
Como ajustar o tamanho do navegador ao tamanho da janela em que o navegador é exibido?
Por exemplo: o tamanho da janela é 450. Como posso ajustar o navegador na janela de modo que a direita e a esquerda fiquem recuadas 2 pixels cada?
Você precisa usar os métodos CFileNavigator::TreeViewAreaWidth() e CFileNavigator::ContentAreaWidth(), especificando a largura da área da lista de árvores e da área de conteúdo. Se você não definir a largura da área de conteúdo, a borda direita do navegador será alinhada automaticamente à borda direita da janela.