Discussão do artigo "Interfaces Gráficas X: Gestão avançada de listas e tabelas. Otimização do código (build 7)" - página 6

 
Anatoli Kazharski:

Bem, você não está acostumado a "redesenhos para frente e para trás". )

Provavelmente haverá um novo artigo na próxima semana. Apresentarei a primeira versão do campo de entrada de várias linhas. Nos artigos subsequentes, adicionarei gradualmente tudo o que foi discutido em particular e no fórum.

Eu adicionaria os métodos ItemsSelectedTotal(); ItemsUnselectedTotal(); juntamente com ItemsTotal();
 
Artyom Trishkin:
Eu adicionaria os métodos ItemsSelectedTotal(); ItemsUnselectedTotal(); juntamente com ItemsTotal();

ao CListView e ao CCheckBoxList?

Eu o farei, mas não no próximo artigo. Portanto, será um artigo bem grande.

 
Anatoli Kazharski:

Para CListView e CCheckBoxList?

Vou adicioná-lo, mas não no próximo artigo. Este é um artigo bastante extenso.

Sim, neles. Certo, obrigado.
 

Tol, como posso descobrir programaticamente qual caixa de seleção de um item de lista está marcada. Sem clicar nela.

Preciso organizar todos os itens marcados na lista.

Estou perplexo. Por favor, diga-me em que direção devo procurar.

 
Artyom Trishkin:

Tol, como posso descobrir programaticamente qual caixa de seleção de um item de lista está marcada. Sem clicar nela.

Preciso organizar todos os itens marcados na lista.

Estou perplexo. Por favor, diga-me em que direção devo procurar.

CCheckBoxList::GetItemState()
 
Anatoli Kazharski:
CCheckBoxList::GetItemState()

Obrigado. Foi isso que eu fiz. Eu estava fazendo um loop de 0 a ItemsTotal(). A culpa foi minha, por isso estava apresentando falhas.

Você pode me dizer se os estados das caixas de seleção são redefinidos ao alternar os períodos de tempo?

Em caso afirmativo, quais são as maneiras de contornar esse momento desagradável? (Elas são redefinidas para mim - talvez eu esteja fazendo algo errado).

 
Artyom Trishkin:

Obrigado a você. Foi isso que eu fiz. Eu estava fazendo um loop de 0 a ItemsTotal(). A culpa foi minha, por isso estava falhando.

Você poderia me dizer se os estados das caixas de seleção são redefinidos ao alternar os períodos de tempo?

Em caso afirmativo, quais são as maneiras de contornar esse momento desagradável? (Eu as redefini - talvez eu esteja fazendo algo errado).

Você precisa gravar em um arquivo. E lê-lo ao instalar a GUI. Esse é o assunto de um artigo futuro e ainda há um longo caminho a percorrer.

 
Anatoli Kazharski:

Você precisa gravar em um arquivo. E lê-lo ao instalar a GUI. Esse é o tópico de um artigo futuro e ainda há um longo caminho a percorrer.

Eu já estou fazendo isso. Não estava esperando por uma resposta rápida ;)
 

Anatol, estou tentando gravar preços de lances de caracteres escritos nas linhas da tabela na coluna 0 para a tabela no cronômetro:

//+------------------------------------------------------------------+
//| Temporizador|
//+------------------------------------------------------------------+
void CProgram::OnTimerEvent(void)
  {
   CWndEvents::OnTimerEvent();
   //--- Pausa entre a atualização de listas e tabelas
   if(m_counter1.CheckTimeCounter()) {
      uint sz=m_table_main_symbol_list.RowsTotal();
      for(uint i=1; i<sz; i++) {
         string sy=m_table_main_symbol_list.GetValue(0,i);
         MqlTick tick;
         if(sy!=NULL && sy!="") {
            if(SymbolInfoTick(sy,tick)) {
               int dg=(int)SymbolInfoInteger(sy,SYMBOL_DIGITS);
               m_table_main_symbol_list.SetValue(1,i,DoubleToString(tick.bid,dg),dg);
               m_table_main_symbol_list.TextColor(1,i,clrDimGray);
               //m_table_main_symbol_list.UpdateTable();
               }
            }
         }
      //--- Redesenhar o gráfico
      m_chart.Redraw();
      }
//--- Pausa entre as atualizações da barra de status
   if(m_counter2.CheckTimeCounter()) {

      //--- Redesenhar o gráfico
      m_chart.Redraw();
      }
  }
//+------------------------------------------------------------------+

Se isso for feito sem UpdateTable(), nenhum dado aparecerá nas células da tabela. Se você atualizar a tabela toda vez que receber um novo tique, será impossível trabalhar com a tabela - ela pisca, a linha destacada pisca etc. ....

Como sair dessa situação?

 
Artyom Trishkin:

Anatole, estou tentando escrever em uma tabela em um cronômetro para a coluna com índice 1 os preços de lance dos caracteres inseridos nas linhas da tabela na coluna 0:

...

Se eu fizer isso sem UpdateTable(), nenhum dado aparecerá nas células da tabela. Se você atualizar a tabela toda vez que receber um novo tique, será impossível trabalhar com a tabela - ela pisca, a linha selecionada pisca, etc. ....

Como sair dessa situação?

Não há dados suficientes para reproduzir. Anexe um exemplo completo para que eu mesmo possa reproduzi-lo.