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

 
Dmitry Fedoseev:

A propósito, a biblioteca de Anatoly também é uma piada. Quantos artigos sobre o assunto? Cerca de 50? Onde quer que você vá nos comentários - "Oh, ainda não, preciso melhorá-lo". O que para começar a usar sua biblioteca deve ler estes 50 artigos? Qual é a essência e o significado?

Eu tentei conectar a biblioteca mencionada, minha opinião é ambígua, sim é conveniente, sim é bonita, mas eu não estava envolvido no MQL quando a biblioteca foi criada, e com as construções subseqüentes do MT, a biblioteca tornou-se "condicionalmente operacional", alguns exemplos dos artigos não compilam ou trabalham com bugs, e para entender as toneladas de código, infelizmente, é mais fácil usar a entrega padrão do MT

Maxim Kuznetsov:

Os modernos construtores de GUI (aqueles que "espalham botões em formulários") são uma coisa muito tecnológica e anexar elementos MQL a eles não parece fantástico.

Quase todos eles têm na forma intermediária (arquivo de projeto, etc.) um XML que descreve a posição e as relações entre os elementos.

A geração de código para a plataforma alvo é na verdade uma transformação XSLT que pode ser feita por qualquer um que pense ser um desenvolvedor web :-)

Tomemos por exemplo o EasyAndFast (https://www.mql5.com/ru/code/19703) porque é baseado em objetos e tem todos os componentes necessários. (e está aberto e documentado, ao contrário deste tópico),
e simplesmente escreva um tradutor.

Não há um construtor de gui-mql, não porque seja mega complicado, mas porque não é popular.


Sim, estou procurando por eles - estou interessado, pelo menos para esfregar o nariz do Peter nele! ))))

Não tenho tempo ou desejo trabalhar todos os detalhes - por que não usar apenas o construtor de GUI Crossplatform?

 
Igor Makanu:

Eu tentei conectar a biblioteca acima mencionada, minha opinião é ambígua, sim é conveniente, sim é bonita, mas eu não estava envolvido no MQL quando esta biblioteca foi criada, e com as construções subseqüentes do MT, a biblioteca tornou-se "condicionalmente operacional", alguns exemplos dos artigos não compilam ou trabalham com bugs, e para entender toneladas de código, infelizmente, é mais fácil usar o pacote MT padrão


Sim, eu estou procurando - pelo menos para esfregar o nariz do Peter nele! ))))

Não tenho tempo ou desejo analisar tudo isso!

Dê uma olhada no QT Designer.

 
Dmitry Fedoseev:

Peter, onde diz que sua GUI não consiste em objetos gráficos, mas é desenhada em uma tela? Não sejamos enganosos, ela parece terrível.

...

Como artista, eu não consegui passar dessas palavras.


Claro, longe de IDEAL, mas "horrível"????

 
Igor Makanu:

Sim, eu estou procurando por um - eu gostaria de esfregar o nariz do Peter nele no mínimo! ))))

Mas falando sério, eu gostaria de tentar algum construtor de GUI em plataforma cruzada, talvez algo para mostrar, que eu possa olhar?

Não há necessidade de limpar)). E não há necessidade de procurar.

DLL para C-sharp. O ambiente VS já tem um construtor. O idioma é quase similar ao MQL. Se não para o Mercado, mas para você mesmo, a opção mais fácil e óbvia com aparência moderna.

E o que Peter oferece é a GUI do tipo DOS da série Turbo Vision da Borland, no início dos anos 90.

 
Yuriy Asaulenko:

E o que Peter oferece é uma GUI do tipo DOS da série Turbo Vision da Borland, no início dos anos 90.

É uma GUI muito boa. Talvez eu seja velho demais, mas acho que é muito bom.

A questão é quem poderia estar interessado em usá-la? Quantos deles são?

 

Fazer sua própria GUI não é o problema.

O problema é encontrar um uso significativo para ele que é necessário para um número ALTÍSSIMO de usuários. Até agora, é com isto que todos têm dificuldades. Se houver uma tarefa normal, haverá uma GUI, e mais de uma...

Petr, qual é a resposta para a pergunta PORQUE os usuários precisam de seu produto? Entendo que você está fascinado com o processo, eu estava passando por ele. Mas, por que os usuários precisam disso? Quem é o público-alvo?
 
Georgiy Merts:

É uma GUI muito boa. Talvez eu seja velho demais, mas acho que é muito bom.

A questão é: quem estaria interessado em usá-lo? Quantos deles estão aqui?

Bom ou ruim - tudo depende das tarefas específicas. Alguns anos atrás eu projetei um terminal GUI em planilhas Excel - com botões, campos, tabelas, gráficos em tempo real e outros atributos. Eu precisava dele especificamente para o comércio manual. Não houve problemas com a construção e a interface.

A GUI de Peter é apresentada como uma solução para o problema e simplificação da construção. Ele o concebeu e o fez, e bem feito, é claro, mas não há nenhum problema aqui por muito tempo, e não há muito o que simplificar.

 

111

Mm-hmm - lindo. Há também uma inconsistência (em estilo) com algumas das outras capturas de tela, o que é altamente questionável.

 
Реter Konow:

Aqui está um exemplo da minha interface de conexão:

Tudo isso já foi trabalhado aqui.

Eu já dei uma olhada. É uma bagunça. O arquivo é quase inteiramente ocupado pela função On_Gui_Event, que tem 600 linhas de comprimento. Aqui está um fragmento dele (a ortografia e a pontuação são preservadas):

void On_Gui_Event(int Element, string value)
{
 string action = value, selected_option = value; //DON'T CHANGE THIS LINE
//------------------------------------
 switch(Element)
   {
//=====================================================================================================================
//WINDOW:   Checkboxes | element: CHECKBOX  | name: Checkbox_1  |  Location: Window's Main Frame
//=====================================================================================================================
case CHECKBOX3___Checkbox_1:
               //------------------------------------------------------------------------------------------------------
               //What to do when checkbox checked or unchecked?
               //------------------------------------------------------------------------------------------------------
               switch((int)action)
               {
                case checked:     break;
  
                case unchecked:     break;
               }
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
  
//=====================================================================================================================
//WINDOW:   Checkboxes | element: CHECKBOX  | name: Checkbox_2  |  Location: Window's Main Frame
//=====================================================================================================================
case CHECKBOX4___Checkbox_2:
               //------------------------------------------------------------------------------------------------------
               //What to do when checkbox checked or unchecked?
               //------------------------------------------------------------------------------------------------------
               switch((int)action)
               {
                case checked:     break;
  
                case unchecked:     break;
               }
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
  ...
//=====================================================================================================================
//WINDOW:   Spin edits | element: D_LIST  | name: D_LIST_2  |  Location: Window's Main Frame
//=====================================================================================================================
case D_LIST20___D_LIST_2:
               //------------------------------------------------------------------------------------------------------
               //What to do when option selected?
               //------------------------------------------------------------------------------------------------------
               if(selected_option == "L_ITEM  1"){}
               if(selected_option == "L_ITEM  2"){}
               if(selected_option == "L_ITEM  3"){}
               if(selected_option == "L_ITEM  4"){}
               if(selected_option == "L_ITEM  5"){}
               if(selected_option == "L_ITEM  6"){}
               if(selected_option == "L_ITEM  7"){}
               if(selected_option == "L_ITEM  8"){}
               if(selected_option == "L_ITEM  9"){}
               if(selected_option == "L_ITEM  10"){}
               if(selected_option == "L_ITEM  11"){}
               if(selected_option == "L_ITEM  12"){}
               if(selected_option == "L_ITEM  13"){}
               if(selected_option == "L_ITEM  14"){}
               if(selected_option == "L_ITEM  16"){}
               if(selected_option == "L_ITEM  17"){}
               if(selected_option == "L_ITEM  18"){}
               if(selected_option == "L_ITEM  19"){}
               if(selected_option == "L_ITEM  20"){}
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
  ...
  }
}

É só um lixo. O código, naturalmente, não é compilado. Nenhuma das constantes do caso está definida no arquivo. O interruptor está dentro da caixa. Os travessões são feitos de tal forma como se quisessem confundir um usuário pobre. Há um monte de código ineficiente como if(selected_option == "L_ITEM 1"){} Em resumo, é uma desgraça e uma desgraça.

 
Vasiliy Sokolov:

Eu já dei uma olhada. É uma bagunça. O arquivo é quase inteiramente ocupado pela função On_Gui_Event, que tem 600 linhas de comprimento. Aqui está um fragmento dele (a ortografia e a pontuação são preservadas):

É só um lixo. O código, naturalmente, não é compilado. Nenhuma das constantes do caso está definida no arquivo. O interruptor está dentro da caixa. Os travessões são feitos de tal forma como se quisessem confundir um usuário pobre. Muito código ineficiente como if(selected_option == "L_ITEM 1"){} Em resumo, é uma desgraça e uma desgraça.

Vasily, você me fez rir muito. )) Por que você deveria tentar compilar tudo o que você tem em mãos?)

Este é um exemplo de um arquivo de conexão GUI. Pergunte a Oleg Papkov como funciona. Que tipo de "código ineficiente"? Código normal que é feito para ser o mais claro possível.