OBJ_BUTTON

Objeto Botão.

ObjButton

Observação

Coordenadas do ponto de ancoragem são em pixels. Você pode selecionar o botão de ancoragem de canto a partir da ENUM_BASE_CORNER.

Exemplo

O seguinte script cria e move o objeto Botão no gráfico. Funções especiais têm sido desenvolvidas para criar e alterar as propriedades do objeto gráfico. Você pode utilizar estas funções "as is" em seus próprios aplicativos.

//--- descrição
#property description "Script cria o Botão no gráfico."
//--- janela de exibição dos parâmetros de entrada durante inicialização do script
#property script_show_inputs
//--- entrada de parâmetros do script
input string           InpName="Button";            // Nome do Botão
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER// Canto do gráfico para ancoragem
input string           InpFont="Arial";             // Fonte
input int              InpFontSize=14;              // Tamanho da fonte
input color            InpColor=clrBlack;           // Cor do texto
input color            InpBackColor=C'236,233,216'// Fundo da cor
input color            InpBorderColor=clrNONE;      // Cor da Borda
input bool             InpState=false;              // Pressionado/Liberado
input bool             InpBack=false;               // Objeto de Fundo
input bool             InpSelection=false;          // Destaque para mover
input bool             InpHidden=true;              // Ocultar na lista de objeto
input long             InpZOrder=0;                 // Prioridade para clique do mouse
//+------------------------------------------------------------------+
//| Criar o botão                                                    |
//+------------------------------------------------------------------+
bool ButtonCreate(const long              chart_ID=0,               // ID do gráfico
                  const string            name="Button",            // nome do botão
                  const int               sub_window=0,             // índice da sub-janela
                  const int               x=0,                      // coordenada X
                  const int               y=0,                      // coordenada Y
                  const int               width=50,                 // largura do botão 
                  const int               height=18,                // altura do botão
                  const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER// canto do gráfico para ancoragem
                  const string            text="Button",            // texto
                  const string            font="Arial",             // fonte
                  const int               font_size=10,             // tamanho da fonte
                  const color             clr=clrBlack,             // cor do texto
                  const color             back_clr=C'236,233,216',  // cor do fundo
                  const color             border_clr=clrNONE,       // cor da borda
                  const bool              state=false,              // pressionada/liberada
                  const bool              back=false,               // no fundo
                  const bool              selection=false,          // destaque para mover
                  const bool              hidden=true,              // ocultar na lista de objeto
                  const long              z_order=0)                // prioridade para clicar no mouse
  {
//--- redefine o valor de erro
   ResetLastError();
//--- criar o botão
   if(!ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": falha ao criar o botão! Código de erro = ",GetLastError());
      return(false);
     }
//--- definir coordenadas do botão
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- definir tamanho do botão
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- determinar o canto do gráfico onde as coordenadas do ponto são definidas
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- definir o texto
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- definir o texto fonte
   ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
//--- definir tamanho da fonte
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
//--- definir a cor do texto
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir a cor de fundo
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
//--- definir a cor da borda
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);
//--- exibir em primeiro plano (false) ou fundo (true)
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- set button state
   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
//--- habilitar (true) ou desabilitar (false) o modo do movimento do botão com o mouse
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto gráfico na lista de objeto 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no gráfico
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execução
   return(true);
  }
//+------------------------------------------------------------------+
//| Mover o botão                                                    |
//+------------------------------------------------------------------+
bool ButtonMove(const long   chart_ID=0,    // ID do gráfico
                const string name="Button"// nome do botão
                const int    x=0,           // coordenada X
                const int    y=0)           // coordenada Y
  {
//--- redefine o valor de erro
   ResetLastError();
//--- mover o botão
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            ": falha para mover coordenada X do botão! Código de erro = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            ": falha para mover coordenada Y do botão! Código de erro = ",GetLastError());
      return(false);
     }
//--- sucesso na execução
   return(true);
  }
//+------------------------------------------------------------------+
//| Alterar o tamanho do botão                                       |
//+------------------------------------------------------------------+
bool ButtonChangeSize(const long   chart_ID=0,    // ID do gráfico
                      const string name="Button"// nome do botão
                      const int    width=50,      // largura do botão
                      const int    height=18)     // altura do botão
  {
//--- redefine o valor de erro
   ResetLastError();
//--- alterar o tamanho do botão
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            ": falha ao alterar a largura do botão! Código de erro = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            ": falha ao alterar a altura do botão! Código de erro = ",GetLastError());
      return(false);
     }
//--- sucesso na execução
   return(true);
  }
//+------------------------------------------------------------------+
//| Alterar canto do gráfico para vinculação do botão                |
//+------------------------------------------------------------------+
bool ButtonChangeCorner(const long             chart_ID=0,               // ID do gráfico
                        const string           name="Button",            // nome do botão
                        const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER// canto do gráfico para ancoragem
  {
//--- redefine o valor de erro
   ResetLastError();
//--- alterar canto de ancoragem
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner))
     {
      Print(__FUNCTION__,
            ": falha ao alterar canto de ancoragem! Código de erro = ",GetLastError());
      return(false);
     }
//--- sucesso na execução
   return(true);
  }
//+------------------------------------------------------------------+
//| Alterar texto do botão                                           |
//+------------------------------------------------------------------+
bool ButtonTextChange(const long   chart_ID=0,    // ID do gráfico
                      const string name="Button"// nome do botão
                      const string text="Text")   // texto
  {
//--- redefine o valor de erro
   ResetLastError();
//--- alterar texto do objeto
   if(!ObjectSetString(chart_ID,name,OBJPROP_TEXT,text))
     {
      Print(__FUNCTION__,
            ": falha ao alterar texto! Código de erro = ",GetLastError());
      return(false);
     }
//--- sucesso na execução
   return(true);
  }
//+------------------------------------------------------------------+
//| Excluir o botão                                                  |
//+------------------------------------------------------------------+
bool ButtonDelete(const long   chart_ID=0,    // ID do gráfico
                  const string name="Button"// nome do botão
  {
//--- redefine o valor de erro
   ResetLastError();
//--- excluir o botão
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": falha ao excluir o botão! Código de erro = ",GetLastError());
      return(false);
     }
//--- sucesso na execução
   return(true);
  }
//+------------------------------------------------------------------+
//| Programa Script da função start (iniciar)                        |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- tamanho da janela do gráfico
   long x_distance;
   long y_distance;
//--- definir tamanho da janela
   if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
     {
      Print("Falha ao obter a largura do gráfico! Código de erro = ",GetLastError());
      return;
     }
   if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
     {
      Print("Falha ao obter a altura do gráfico! Código de erro = ",GetLastError());
      return;
     }
//--- definir a etapa de alterar o tamanho do botão
   int x_step=(int)x_distance/32;
   int y_step=(int)y_distance/32;
//--- definir as coordenadas botão e seu tamanho
   int x=(int)x_distance/32;
   int y=(int)y_distance/32;
   int x_size=(int)x_distance*15/16;
   int y_size=(int)y_distance*15/16;
//--- criar o botão
   if(!ButtonCreate(0,InpName,0,x,y,x_size,y_size,InpCorner,"Press",InpFont,InpFontSize,
      InpColor,InpBackColor,InpBorderColor,InpState,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
//--- redesenhar o gráfico
   ChartRedraw();
//--- reduzir o botão no loop
   int i=0;
   while(i<13)
     {
      //--- meio segundo de atraso
      Sleep(500);
      //--- mudar o botão para o estado pressionado
      ObjectSetInteger(0,InpName,OBJPROP_STATE,true);
      //--- redesenhar o gráfico e esperar por 0.2 segundos
      ChartRedraw();
      Sleep(200);
      //--- redefinir as coordenadas e tamanho do botão
      x+=x_step;
      y+=y_step;
      x_size-=x_step*2;
      y_size-=y_step*2;
      //--- reduzir o botão
      ButtonMove(0,InpName,x,y);
      ButtonChangeSize(0,InpName,x_size,y_size);
      //--- trazer o botão de volta ao estado liberado
      ObjectSetInteger(0,InpName,OBJPROP_STATE,false);
      //--- redesenhar o gráfico
      ChartRedraw();
      //--- verificar se o funcionamento do script foi desativado a força
      if(IsStopped())
         return;
      //--- incrementar um contador de loop
      i++;
     }
//--- meio segundo de atraso
   Sleep(500);
//--- excluir o botão
   ButtonDelete(0,InpName);
   ChartRedraw();
//--- esperar por um segundo
   Sleep(1000);
//---
  }