Minha abordagem. O núcleo é o motor. - página 170

 
jdjahfkahjf:
Você ainda não percebeu que o futuro do comércio, e seu auge, são os botões.
E estes botões, Peter, serão vendidos a outros vendedores. Quem, por sua vez, vende o quê? Você adivinhou, botões também.
Mas para vender botões a outros vendedores de botões ele terá que comprar botões de outros fabricantes de botões.

Hilariante :))))

 
Dmitry Fedoseev:

Bem feito, você******* tire uma torta da prateleira.

OK, vou tentar justificar isso:

Se você seguir sua solução, o usuário ainda terá que copiar o código fonte da classe estática no projeto, que traduzirá os eventos, executará o formulário em um poço de fios separado, etc. Além disso, você deve ligar estaticamente o formulário a esta classe, ou seja, digitar explicitamente o nome da classe do formulário e seus componentes. Isto é, modificar explicitamente seu código de camada quando um formulário é alterado ou quando algum elemento é adicionado. Em outras palavras, uma solução simples e direta, funcionaria bem para demonstrar a interação com uma forma específica, que é o que você mostrou. Em um caso generalizado, é melhor separar a lógica de controle da lógica de exibição, que é o que eu fiz. Além disso, esta separação permite que você proteja o controlador de modificações não qualificadas.

Aqui está um comentário que responde exatamente à questão de por que foi feito desta maneira e não o contrário:

Igor Makanu:

você provavelmente está certo, é mais fácil para um usuário esboçar elementos gráficos de uma forma no VS2017, então verifique executando sua criação no VS, tendo certeza de que "tudo está girando", ele pode passar para a criação de uma interação de programa em .Net e MT5

...

Seu caminho provavelmente é mais prático.

 
Реter Konow:

Exatamente. Haverá um enorme banco de dados de códigos Cyb com imagens. Entrar, selecionar, obter o código, inserir no construtor, obter o núcleo com os arquivos de conexão. E a conexão já está pensada e muito mais fácil.

Portanto, cada forma está em um arquivo separado. Mesmo se fosse mais simples, as possibilidades são limitadas.

 
Dmitry Fedoseev:

Portanto, também ali, cada forma está em um arquivo separado. Mesmo se fosse mais simples, as possibilidades são limitadas.

Para ser honesto, eu ainda não entendi totalmente a tecnologia, portanto ainda não posso dizer nada sobre as limitações da solução de Vasiliy.

 
Реter Konow:

Basiléia, sem ofensa, mas um painel como este:

Eu tenho sobre este tipo de código:

Este código pode simplesmente ser passado um ao outro, ou colocado em uma base comum e não há necessidade de desenhar um formulário específico para todos.

Coloquei-o no construtor e consegui outra janela com todos os parâmetros e conexões do item.

Peter, para desenhar o mesmo painel que você tem, eu preciso aprender sua linguagem de marcação. O usuário não precisa de nada além de um mouse e habilidades básicas para desenhar este painel no Visual Studio. Você sente a diferença?

 
Реter Konow:

Para ser honesto, eu ainda não entendi totalmente a tecnologia, portanto ainda não posso dizer nada sobre as limitações da solução de Vasiliy.

E eu não escrevi sobre as limitações da solução de Vasiliy.

 
Vasiliy Sokolov:

Peter, para desenhar o mesmo painel que o seu, eu preciso aprender sua linguagem de marcação. O usuário não precisa de nada para desenhar este painel no Visual Studio, apenas um mouse e habilidades básicas. Você consegue sentir a diferença?

Vasily, uma pessoa estuda minha linguagem de marcação e escreve o painel. Mil outros vêem a foto do painel e pegam o ciber-código pronto. Eles o colam em meu construtor e colocam o painel em seu programa.

 
Реter Konow:

Pré-visualizado, mas continuará relendo para entrar nos detalhes.

1. Por que o artigo diz 5 pedidos por segundo? Minha freqüência é de 30ms.

2. Você pode me mostrar como é uma conexão a uma tabela de mil células?

3 Pelo que entendi, chamar os elementos no formulário pelos nomes enviados aoGuiController::SendEvent function? Você tem que especificar todos os parâmetros? Nome, evento, valor? Mais alguns zeros... E no cronômetro para fazer um loop em eventos?

Em outras palavras, o usuário cria ele mesmo a fila de eventos e depois a envia para o Controlador no temporizador?


Tenho que agradecer a vocês, pela grande promoção do meu tema.

1) Não faz diferença. Você pode configurá-lo para qualquer freqüência que quiser.

2) As mesas não são suportadas agora (grande motivo para sua torcida, a propósito:)

3) Sim, endereçando pelo nome, você tem que especificar todos os parâmetros. Mas, e isto é o mais importante, não há um único modelo de evento monolítico. Se você quer seu próprio modelo, é bem-vindo. É elementar faze-lo. Mas não se pode passar sem temporizador.

A fila de eventos é um algoritmo generalizado para o manuseio confiável de eventos. O usuário não compõe nada; os eventos gerados por ele chegam sozinhos à fila de espera. A fila em si consiste de apenas um evento 99,9% do tempo.

 
Vasiliy Sokolov:

OK, vou tentar justificar isso:

Se seguirmos sua solução, o usuário ainda terá que copiar o código fonte da classe estática no projeto, que traduzirá os eventos, executará o formulário em um thread separado, etc. Além disso, você deve ligar estaticamente o formulário a esta classe, ou seja, digitar explicitamente o nome da classe do formulário e seus componentes. Isto é, modificar explicitamente seu código de camada quando um formulário é alterado ou quando algum elemento é adicionado. Em outras palavras, uma solução simples e direta, funcionaria bem para demonstrar a interação com uma forma específica, que é o que você mostrou. Em um caso generalizado, é melhor separar a lógica de controle da lógica de exibição, que é o que eu fiz. Além disso, esta separação permite que você proteja o controlador de modificações não qualificadas.

Aqui está um comentário que responde exatamente à questão de por que foi feito desta maneira e não o contrário:

O maior problema é lançar a forma em uma linha separada, mas ela é resolvida por duas linhas de código, portanto, no final, não é um problema. Além disso, no meu exemplo, fiz intencionalmente a abertura do segundo formulário, para mostrar como é fácil e simples de fazer, e como você pode abrir qualquer número de formulários em fios separados.

E isso destacado na citação - o feno e a palha são a mesma coisa? Sim! para comer uma banana, é preciso descascar a casca.

 
Реter Konow:

Para ser honesto, eu ainda não entendi totalmente a tecnologia, portanto ainda não posso dizer nada sobre as limitações da solução de Vasiliy.

Não há limite de capacidade ali, tudo é limitado nem mais nem menos que a funcionalidade dos elementos gráficos do Windows, leia o artigo"Sob o capô do GuiController", adicione os controles necessários no designer do formulário e adicione ao MT5 em <elemento - lista de manipuladores de eventos> que eventos você acha que precisa receber

Vasiliy Sokolov:

2) As mesas não são suportadas agora (grande motivo para sua regozijo, a propósito:)

Eu também vou parabenizar Peter, fiz um trabalho de tabela em um formulário separado em .dll em .Net, clique com o botão direito do mouse em eventos, ordenação e outros encantos dataGridView todo o trabalho, fez em parte experimentos tabela como o terminal, mas bastante caprichoso e lento dataGridView , eu tentei muitas coisas com ele (e preenchi um datatable clone e depois copiado para o datatable que está ligado a um dataGridView e . e pesquisar no Google durante uma semana e experimentar, enquanto com o dataGridView um fiasco completo - você não pode escrever mais de 3-5 segundos) a tabela 10x11 já é crítica, embora o formulário com a tabela e funcione em uma linha separada

SZY: Eu anexei um StringGrid ao MT4 5 anos atrás em Delphi, eu não estava nada preocupado sobre como ele funcionava, mas tudo estava voando, porém com o Microsoft dataGridView é um problema, hoje eu vou tentar experimentar com o SourceGrid, de acordo com os feedbacks ele é mais rápido que o dataGridView