photo
+ 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,574 Tempos em 856 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. Os seguintes 2 Usuários Dizem Obrigado o a jssuser por este post útil:

    Não registrado (2 )

+ 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