Discussão do artigo "Interfaces gráficas X: Algoritmo de quebra de linha na caixa de texto multilinha (build 12)" - página 2

 

Alexander:
...

Nesse sentido, você pode me dizer quais alterações devem ser feitas nos exemplos anteriores para que eles funcionem ou talvez isso já tenha sido descrito em algum artigo? Especificamente, quero criar um painel com base no exemplo da pasta TestLibrary05 do Artigo 7. Obrigado.

Baixe o exemplo do arquivo. Ele contém exemplos de quase todos os controles da biblioteca em um único painel.

Arquivos anexados:
 
O exemplo baixado do arquivo foi compilado, mas ao carregá-lo no gráfico, o registro mostra a entrada " 2017.04.15 12:58:14.715 TestLibrary01 (USDRUB_TOM,D1) invalid pointer access in 'WndContainer.mqh' (430,38) ". e, depois de carregado, ele não reage a absolutamente nada e, mesmo fechando, é impossível, tive de excluir o gráfico. Tenho o MT5 da última versão 1580, datada de 10 de abril.
 
Alexander:
O exemplo baixado do arquivo foi compilado, mas ao carregá-lo no gráfico, o registro mostra a entrada " 2017.04.15 12:58:14.715 TestLibrary01 (USDRUB_TOM,D1) invalid pointer access in 'WndContainer.mqh' (430,38) ". e, depois de carregado, ele não reage a absolutamente nada e, mesmo fechando, é impossível, tive de excluir o gráfico. Tenho o MT5 build 1580 mais recente, datado de 10 de abril.

Infelizmente, ainda não consegui reproduzir seu problema. Não tive problemas ao testar esse Expert Advisor (a mesma compilação do terminal). Não é a primeira vez que me deparo com o fato de que diferentes usuários podem obter resultados diferentes ao testar o mesmo aplicativo MQL. Em geral, vou me lembrar disso. Vou fazer uma verificação adicional. Obrigado pela mensagem.

Quando esse erro ocorre, o programa é excluído do gráfico, e todos os objetos gráficos criados nele permanecem no gráfico, portanto, você deve excluí-los manualmente com Ctrl + B.

 
O mais estranho é que o programa não é desinstalado, provavelmente porque nem mesmo o ícone do EA aparece no canto superior direito, e não há nenhum na lista de objetos.
 
Alexander:
O mais estranho é que o programa não é desinstalado, provavelmente porque nem mesmo o ícone do EA aparece no canto superior direito, e não há nenhum na lista de objetos.
Se não houver ícone do Expert Advisor, isso significa que o programa já foi desinstalado. Clique no botão "All" (Todos) na janela"Object List" (Lista de objetos) (Ctrl + B).
 
Obrigado, Anatoly!
Um exemplo muito instrutivo!
É especialmente bom que ele também funcione no MT4.
Tiro o chapéu para você mais uma vez.
Seu trabalho persistente e meticuloso é admirável.
Tudo de bom e de bom humor!
Boas festas.
 
Mikhail Dovbakh:
...
É especialmente bom que ela funcione também no MT4.
...

Tenha cuidado com o MT4, pois não testo a biblioteca nesse terminal há algum tempo.

 

Anatoly, há algum erro de digitação aqui?

   for(uint s=1; s<symbols_total; s++)
     {
      //--- Contagem se (2) дошли до конца строки или (2)  нашли пробел (конец слова)
      if(s+1==symbols_total || (m_lines[l].m_symbol[s]!=SPACE && m_lines[l].m_symbol[s-1]==SPACE))
         words_counter++;
     }
//--- Retorna a contagem de palavras
   return(words_counter);

Caso contrário, explique a lógica disso

 
Rashid Umarov:

Anatoly, há algum erro de digitação aqui?

Caso contrário, explique a lógica, por favor

Erro de digitação. (1) (2)

A lógica é simples. Contamos as palavras na linha atual. Uma palavra aqui é uma sequência contínua de caracteres (sem espaço).

  1. Se tivermos chegado ao final da string, aumentamos o contador de palavras.
  2. Se o caractere atual não for um espaço, mas o espaço anterior, aumentamos o contador de palavras.
 
Se eu adicionar novas linhas programaticamente, chamarei UpdateTextBox(), mas as barras de rolagem e o wordwrapping não serão aplicados. Preciso pressionar alguma tecla. Como acionar isso sem pressionar nenhuma tecla?