photo

Fórum Forex Brasil

Lugar da Comunidade Forex

+ Responder ao Tópico
Resultados de 1 a 1 de 1

Thread: OBJ_LABEL Objeto Etiqueta.

  1. #1 Fechar a publicação
    Senior Member jssuser's Avatar jssuser's Avatar
    Data de afiliação
    Aug 2018
    Postagens
    1,503
    Obrigado
    209
    Agradecimentos 1,006 Tempos em 578 Postagens
    AssinarAssinar
    subscritar: 0

    OBJ_LABEL Objeto Etiqueta.

    Name:  objtextlabel.png
Views: 679
Size:  5.4 KB

    Observação

    Posição do ponto de ancoragem relativa a etiqueta pode ser selecionada do enumerador ENUM_ANCHOR_POINT. Coordenadas do ponto de ancoragem são em pixels.

    Você também pode selecionar uma ancoragem de etiqueta de texto no canto a partir do enumerador ENUM_BASE_CORNER.

    Exemplo

    O seguinte script cria e move o objeto Edit 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 objeto gráfico \"Etiqueta\"."
    //--- 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="Label"; // Nome etiqueta
    input int InpX=150; // distância do eixo X
    input int InpY=150; // distância do eixo Y
    input string InpFont="Arial"; // Fonte
    input int InpFontSize=14; // Tamanho da fonte
    input color InpColor=clrRed; // Cor
    input double InpAngle=0.0; // Ângulo de inclinação em graus
    input ENUM_ANCHOR_POINT InpAnchor=ANCHOR_CENTER; // Tipo de ancoragem
    input bool InpBack=false; // Objeto de fundo
    input bool InpSelection=true; // Destaque para mover
    input bool InpHidden=true; // Ocultar na lista de objetos
    input long InpZOrder=0; // Prioridade para clique do mouse
    //+------------------------------------------------------------------+
    //| Criar um a etiqueta de texto |
    //+------------------------------------------------------------------+
    bool LabelCreate(const long chart_ID=0, // ID do gráfico
    const string name="Label", // nome da etiqueta
    const int sub_window=0, // índice da sub-janela
    const int x=0, // coordenada X
    const int y=0, // coordenada Y
    const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // canto do gráfico para ancoragem
    const string text="Label", // texto
    const string font="Arial", // fonte
    const int font_size=10, // tamanho da fonte
    const color clr=clrRed, // cor
    const double angle=0.0, // inclinação do texto
    const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // tipo de ancoragem
    const bool back=false, // no fundo
    const bool selection=false, // destaque para mover
    const bool hidden=true, // ocultar na lista de objetos
    const long z_order=0) // prioridade para clicar no mouse
    {
    //--- redefine o valor de erro
    ResetLastError();
    //--- criar um a etiqueta de texto
    if(!ObjectCreate(chart_ID,name,OBJ_LABEL,sub_windo w,0,0))
    {
    Print(__FUNCTION__,
    ": falha ao criar uma etiqueta de texto! Código de erro = ",GetLastError());
    return(false);
    }
    //--- definir coordenadas da etiqueta
    ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x );
    ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y );
    //--- determinar o canto do gráfico onde as coordenadas do ponto são definidas
    ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corn er);
    //--- 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,fo nt_size);
    //--- definir o ângulo de inclinação do texto
    ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle) ;
    //--- tipo de definição de ancoragem
    ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anch or);
    //--- definir cor
    ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
    //--- exibir em primeiro plano (false) ou fundo (true)
    ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
    //--- Habilitar (true) ou desabilitar (false) o modo de movimento da etiqueta pelo mouse
    ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE, selection);
    ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,se lection);
    //--- ocultar (true) ou exibir (false) o nome do objeto gráfico na lista de objeto
    ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidd en);
    //--- definir a prioridade para receber o evento com um clique do mouse no gráfico
    ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_or der);
    //--- sucesso na execução
    return(true);
    }
    //+------------------------------------------------------------------+
    //| Mover a etiqueta de texto |
    //+------------------------------------------------------------------+
    bool LabelMove(const long chart_ID=0, // ID do gráfico
    const string name="Label", // nome da etiqueta
    const int x=0, // coordenada X
    const int y=0) // coordenada Y
    {
    //--- redefine o valor de erro
    ResetLastError();
    //--- mover a etiqueta de texto
    if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTAN CE,x))
    {
    Print(__FUNCTION__,
    ": falha para mover coordenada X do objeto! Código de erro = ",GetLastError());
    return(false);
    }
    if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTAN CE,y))
    {
    Print(__FUNCTION__,
    ": falha para mover coordenada X do objeto! Código de erro = ",GetLastError());
    return(false);
    }
    //--- sucesso na execução
    return(true);
    }
    //+------------------------------------------------------------------+
    //| Alterar canto do gráfico para vinculação da etiqueta |
    //+------------------------------------------------------------------+
    bool LabelChangeCorner(const long chart_ID=0, // ID do gráfico
    const string name="Label", // nome da etiqueta
    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 o texto do objeto |
    //+------------------------------------------------------------------+
    bool LabelTextChange(const long chart_ID=0, // ID do gráfico
    const string name="Label", // nome do objeto
    const string text="Text") // texto
    {
    //--- redefine o valor de erro
    ResetLastError();
    //--- alterar texto do objeto
    if(!ObjectSetString(chart_ID,name,OBJPROP_TEXT,tex t))
    {
    Print(__FUNCTION__,
    ": falha ao alterar texto! Código de erro = ",GetLastError());
    return(false);
    }
    //--- sucesso na execução
    return(true);
    }
    //+------------------------------------------------------------------+
    //| Apagar uma etiqueta de texto |
    //+------------------------------------------------------------------+
    bool LabelDelete(const long chart_ID=0, // ID do gráfico
    const string name="Label") // nome da etiqueta
    {
    //--- redefine o valor de erro
    ResetLastError();
    //--- excluir a etiqueta
    if(!ObjectDelete(chart_ID,name))
    {
    Print(__FUNCTION__,
    ": falha ao excluir a etiqueta de texto! Código de erro = ",GetLastError());
    return(false);
    }
    //--- sucesso na execução
    return(true);
    }
    //+------------------------------------------------------------------+
    //| Programa Script da função start (iniciar) |
    //+------------------------------------------------------------------+
    void OnStart()
    {
    //--- armazenar as coordenadas das etiquetas nas variáveis locais
    int x=InpX;
    int y=InpY;
    //--- 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_di stance))
    {
    Print("Falha ao obter a largura do gráfico! Código de erro = ",GetLastError());
    return;
    }
    if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_d istance))
    {
    Print("Falha ao obter a altura do gráfico! Código de erro = ",GetLastError());
    return;
    }
    //--- verificar a exatidão dos parâmetros de entrada
    if(InpX<0 || InpX>x_distance-1 || InpY<0 || InpY>y_distance-1)
    {
    Print("Erro! Valores incorretos dos parâmetros de entrada!");
    return;
    }
    //--- preparar texto inicial para a etiqueta
    string text;
    StringConcatenate(text,"Canto inferior direito: ",x,",",y);
    //--- criar uma etiqueta de texto no gráfico
    if(!LabelCreate(0,InpName,0,InpX,InpY,CORNER_LEFT_ UPPER,text,InpFont,InpFontSize,
    InpColor,InpAngle,InpAnchor,InpBack,InpSelection,I npHidden,InpZOrder))
    {
    return;
    }
    //--- redesenhar o gráfico e esperar por um segundo
    ChartRedraw();
    Sleep(500);
    //--- mover a etiqueta e alterar o seu texto simultaneamente
    //--- número de iterações por eixos
    int h_steps=(int)(x_distance/2-InpX);
    int v_steps=(int)(y_distance/2-InpY);
    //--- mover a etiqueta para baixo
    for(int i=0;i<v_steps;i++)
    {
    //--- alterar a coordenada
    y+=2;
    //--- mover a etiqueta e alterar o seu texto
    MoveAndTextChange(x,y,"Canto superior esquerdo: ");
    }
    //--- meio segundo de atraso
    Sleep(500);
    //--- mover a etiqueta para a direita
    for(int i=0;i<h_steps;i++)
    {
    //--- alterar a coordenada
    x+=2;
    //--- mover a etiqueta e alterar o seu texto
    MoveAndTextChange(x,y,"Canto superior esquerdo: ");
    }
    //--- meio segundo de atraso
    Sleep(500);
    //--- mover a etiqueta para cima
    for(int i=0;i<v_steps;i++)
    {
    //--- alterar a coordenada
    y-=2;
    //--- mover a etiqueta e alterar o seu texto
    MoveAndTextChange(x,y,"Canto superior esquerdo: ");
    }
    //--- meio segundo de atraso
    Sleep(500);
    //--- mover a etiqueta para a esquerda
    for(int i=0;i<h_steps;i++)
    {
    //--- alterar a coordenada
    x-=2;
    //--- mover a etiqueta e alterar o seu texto
    MoveAndTextChange(x,y,"Canto superior esquerdo: ");
    }
    //--- meio segundo de atraso
    Sleep(500);
    //--- agora, mover o ponto para mudar o canto de ancoragem
    //--- mover para o canto inferior esquerdo
    if(!LabelChangeCorner(0,InpName,CORNER_LEFT_LOWER) )
    return;
    //--- alterar texto da etiqueta
    StringConcatenate(text,"Canto inferior direito: ",x,",",y);
    if(!LabelTextChange(0,InpName,text))
    return;
    //--- redesenhar o gráfico e esperar por dois segundos
    ChartRedraw();
    Sleep(2000);
    //--- mover para o canto inferior direito
    if(!LabelChangeCorner(0,InpName,CORNER_RIGHT_LOWER ))
    return;
    //--- alterar texto da etiqueta
    StringConcatenate(text,"Canto direito inferior: ",x,",",y);
    if(!LabelTextChange(0,InpName,text))
    return;
    //--- redesenhar o gráfico e esperar por dois segundos
    ChartRedraw();
    Sleep(2000);
    //--- mover para o canto superior direito
    if(!LabelChangeCorner(0,InpName,CORNER_RIGHT_UPPER ))
    return;
    //--- alterar texto da etiqueta
    StringConcatenate(text,"Canto inferior direito: ",x,",",y);
    if(!LabelTextChange(0,InpName,text))
    return;
    //--- redesenhar o gráfico e esperar por dois segundos
    ChartRedraw();
    Sleep(2000);
    //--- mover para o canto superior esquerdo
    if(!LabelChangeCorner(0,InpName,CORNER_LEFT_UPPER) )
    return;
    //--- alterar texto da etiqueta
    StringConcatenate(text,"Canto inferior direito: ",x,",",y);
    if(!LabelTextChange(0,InpName,text))
    return;
    //--- redesenhar o gráfico e esperar por dois segundos
    ChartRedraw();
    Sleep(2000);
    //--- excluir a etiqueta
    LabelDelete(0,InpName);
    //--- redesenhar o gráfico e esperar por um segundo
    ChartRedraw();
    Sleep(500);
    //---
    }
    //+------------------------------------------------------------------+
    //| A função movimenta o objeto e altera o seu texto |
    //+------------------------------------------------------------------+
    bool MoveAndTextChange(const int x,const int y,string text)
    {
    //--- mover a etiqueta
    if(!LabelMove(0,InpName,x,y))
    return(false);
    //--- alterar texto da etiqueta
    StringConcatenate(text,text,x,",",y);
    if(!LabelTextChange(0,InpName,text))
    return(false);
    //--- verificar se o funcionamento do script foi desativado a força
    if(IsStopped())
    return(false);
    //--- redesenhar o gráfico
    ChartRedraw();
    // 0.01 segundos de atraso
    Sleep(10);
    //--- sair da função
    return(true);
    }

    Though trading on financial markets involves high risk, it can still generate extra income in case you apply the right approach. By choosing a reliable broker such as InstaForex you get access to the international financial markets and open your way towards financial independence. You can sign up here.


  2. The Following User Says Thank You to jssuser For This Useful Post:

    Não registrado (1 )

+ Responder ao Tópico

Permissões de postagens

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts