Botão de decremento da classe CListView não funciona (Biblioteca Padrão)

 

Quero criar uma lista que possibilite a adição e exclusão de linhas pelo usuário. Ocorre que se eu crio uma lista com máximo de 10 linhas visíveis e a inicializo com menos de 10 itens quando pressiono o botão para adicionar novos itens e aparece a barrra de rolagem, o botão de decremento para rolar a lista para cima, está funcionando como botão de incremento, rolando a lista para baixo. Esse erro não ocorre se já inicializar a lista com mais de 10 itens.
Para teste usei o arquivo de exemplo chamado de Controls, somente alterando para um botão adicionar e e outro remover elementos.


Essa é a alteração das funções dos botões que fiz no arquivo ControlsDialog.mqh para adicionar e remover linhas.

//+------------------------------------------------------------------+
//| Event handler                                                    |
//+------------------------------------------------------------------+
void CControlsDialog::OnClickButton1(void)
  {
   m_list_view.AddItem("New Item");
   m_edit.Text(__FUNCTION__);
  }
//+------------------------------------------------------------------+
//| Event handler                                                    |
//+------------------------------------------------------------------+
void CControlsDialog::OnClickButton2(void)
  {
   m_list_view.ItemDelete(m_list_view.Total()-1);
   m_edit.Text(__FUNCTION__);
  }


Para inicializar a lista como menos de 10 itens, 5 itens por exemplo, eu usei o loop a seguir, e para inicializar com mais de 10 itens, 15 por exemplo usei o mesmo loop, somente alterando o limite de 5 para 15.

//+------------------------------------------------------------------+
//| Create the "TableView" element                                    |
//+------------------------------------------------------------------+
bool CControlsDialog::CreateTableView(void)
  {
//--- coordinates
   int x1=INDENT_LEFT;
   int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y)+
          (BUTTON_HEIGHT+CONTROLS_GAP_Y)+
          (EDIT_HEIGHT+2*CONTROLS_GAP_Y);
   int x2=ClientAreaWidth()-INDENT_RIGHT;
   int y2=y1+LIST_HEIGHT-CONTROLS_GAP_Y;
//--- create
   if(!m_list_view.Create(m_chart_id,m_name+"TableView",m_subwin,x1,y1,x2,y2))
      return(false);
   if(!Add(m_list_view))
      return(false);
//--- fill out with strings

   for(int i=0; i<5; i++)
      if(!m_list_view.AddItem("Item_"+IntegerToString(i)))
         return(false);


//--- succeed
   return(true);
  }
Razão: