Tente
//+------------------------------------------------------------------+ void Prn_Rect_Label(string Name, int X, int Y, int width, int height, color CLR, int Corner, bool back) { ObjectDelete(0,Name); ObjectCreate(0,Name,OBJ_RECTANGLE_LABEL,0,0,0); ObjectSetInteger(0,Name,OBJPROP_XDISTANCE,X); ObjectSetInteger(0,Name,OBJPROP_YDISTANCE,Y); ObjectSetInteger(0,Name,OBJPROP_XSIZE,width); ObjectSetInteger(0,Name,OBJPROP_YSIZE,height); ObjectSetInteger(0,Name,OBJPROP_BGCOLOR,CLR); ObjectSetInteger(0,Name,OBJPROP_CORNER,Corner); ObjectSetInteger(0,Name,OBJPROP_BACK,back); return; }
Tente
Não é preciso apagá-lo, é preciso verificá-lo para ver se ele existe. Se ela não existe, então crie-a. E depois estabelecer parâmetros.
Acordado
encontrar primeiro.
Mas se o objeto for apagado e recriado em cada carrapato com o mesmo nome, a busca por um objeto existente conhecido é desnecessária.Então, por que o preenchimento não está sendo ouvido?
e se assim for (falso --> verdadeiro):
ObjectSetInteger (current_chart_id, obj_name1, OBJPROP_FILL, true); // не задается сразу
Não funciona. Eu já tentei a seguinte função
ObjectSet (obj_name1, OBJPROP_FILL, true | false);
ObjectSetInteger (current_chart_id, obj_name1, OBJPROP_FILL, false);
Em geral, este código deve funcionar? Talvez seja uma falha em meu terminal?
ObjectSetInteger (current_chart_id, obj_name1, OBJPROP_FILL, false);
É claro.
Compare este código com seu próprio código em detalhes e coloque-o no OnTimer(), pois não há carrapatos de saída, ou execute-o temporariamente no OnInit():
https://www.mql5.com/ru/docs/constants/objectconstants/enum_object/obj_rectangle
- www.mql5.com
Eu baseei meu código neste exemplo. Eu simplesmente não consigo entender qual é a diferença. Somente que existe uma janela para os parâmetros de entrada.
E se eu não precisar desta janela? Se eu quiser apenas criar um objeto com os parâmetros que eu quero. Isto é possível?
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Saudações, caros programadores!
"Para terminal MT4".
Gostaria de receber algumas dicas de vocês. Deparei-me com a seguinte nuance...
1. eu crio um objeto retângulo - ele funciona:
2. eu defino as propriedades:
- estilo - funcionou;
- largura de linha - trabalhada;
- cor - funcionou;
- preencher - não quer ouvir;
Eu brincava e brincava e descobri que o objeto retângulo é criado com "Desenhar objeto como fundo" verificado por padrão. Desde que esta caixa de seleção esteja marcada, o retângulo não escuta os comandos do programa, e se você remover manualmente esta caixa de seleção das propriedades do objeto, então você pode controlar o preenchimento do programa.
A questão é por que o objeto não está configurado para "encher" a propriedade imediatamente? O que eu faço de errado e o que eu não sei?
Por favor, ajude quem puder!
Abaixo está o código utilizado:
#janela_do_cartão_indicador de propriedade
int start()
{
long current_chart_id=ChartID();
//
string obj_name1="Rectangle1";
//
duplo Preço_Nível_1 = 1296; // preço do ouro
duplo Preço_Nível_2 = 1293;
//
datetime Left_Side_1 = Hora[9];
// datetime Right_Side_1 = Time[0] + PeriodSeconds() * 7;
//
const color clr = clrBeige;
const ENUM_LINE_STYLE style = STYLE_DASH;
largura const int = 1;
const bool fill = falso;
//
ObjetoCriar (ID_do_cartão_actual, nome_objecto1, OBJ_RECTANGLE, 0, Lado_Esquerdo_1, Nível_de_preço_1, Lado_direito_1, Nível_de_preço_2);
ObjectSetInteger (current_chart_id, obj_name1, OBJPROP_COLOR, clr);
ObjectSetInteger (current_chart_id, obj_name1, OBJPROP_STYLE, estilo);
ObjectSetInteger (current_chart_id, obj_name1, OBJPROP_WIDTH, width);
ObjectSetInteger (current_chart_id, obj_name1, OBJPROP_FILL, false); // não definido imediatamente
retorno(0);