Невидимые объекты - страница 2

 
Candid:

А код-то - в первом посте с самого начала был :)
я имел ввиду тот код где все нормально работает, скорее всего там объекты сразу прорисовываются, просто сравнить хотел
 

Хм, да любой практически вариант рисовки объектов. Я настолько привык, что они рисуются без WindowRedraw(), что почти забыл про неё :)


P.S. Да хоть такой вариант

#property show_inputs

extern double Level = 1.3050;
extern double Step = 100;
//+------------------------------------------------------------------+
//| script                                                           |
//+------------------------------------------------------------------+
int start() {
  int i;
  string OName;
  for (i=-10;i<=10;i++) {
    OName = "Q"+i;
    ObjectDelete(OName);
    ObjectCreate(OName,OBJ_HLINE,0,0,Level+i*Step*Point);
    ObjectSet(OName,OBJPROP_COLOR,Blue);
  }
}
 
Точнее для чистоты эксперимента так
#property show_inputs

extern double Level = 1.3050;
extern double Step = 100;
//+------------------------------------------------------------------+
//| script                                                           |
//+------------------------------------------------------------------+
int start() {
  int i;
  string OName;
  for (i=-10;i<=10;i++) {
    OName = "Q"+i;
    ObjectDelete(OName);
    ObjectCreate(OName,OBJ_HLINE,0,0,0);
    ObjectSet(OName,OBJPROP_COLOR,Blue);
    ObjectSet(OName,OBJPROP_PRICE1,Level+i*Step*Point);
  }
}
 
//#property show_inputs

extern double Level = 1.3050;
extern double Step = 100;
//+------------------------------------------------------------------+
//| script                                                           |
//+------------------------------------------------------------------+
int start() {
  int i;
  string OName;
  while(!IsStopped())
  {
  ObjectCreateTrend("O",OBJ_HLINE,0,0,Level,0,0,Blue);
  Sleep(200);
  }
}
void ObjectCreateTrend(string iObjectName,int Type,int iWindow,int X1Time,double Y1Price,int X2Time,double Y2Price,color iColor)
{
        if (ObjectFind(iObjectName)<0) {
                ObjectCreate(iObjectName,Type,iWindow,0,0);
                ObjectSet(iObjectName,OBJPROP_COLOR,iColor);
                ObjectSet(iObjectName,OBJPROP_RAY,true);
                //Alert("");
        }
        if (X1Time!=0)
           ObjectSet(iObjectName,OBJPROP_TIME1,X1Time);
        ObjectSet(iObjectName,OBJPROP_PRICE1,Y1Price);
        if (X2Time!=0)
           ObjectSet(iObjectName,OBJPROP_TIME2,X2Time);
        if (Y2Price!=0)
           ObjectSet(iObjectName,OBJPROP_PRICE2,Y2Price);
}

вышеупомянутый эффект возникает в замкнутом цикле, т.к. старт не завершаеться обновление графика не происходит

по завершинию скрипта объект прорисовывается

 
//+------------------------------------------------------------------+
//|                                                 LoopTemplate.mq4 |
//|                                                    Candid, 2010. |
//|                                          http://candid.110mb.com |
//+------------------------------------------------------------------+
string ScriptName = "LoopTemplate";

#property show_inputs

extern int Delay = 500;

//+------------------------------------------------------------------+
void SetWingdingsLabel(string LabelName, string Code, int Corner, int X, int Y, color Color, int Size) {
  ObjectCreate(LabelName,OBJ_LABEL,0,0,0);
  ObjectSet(LabelName,OBJPROP_CORNER,Corner);
  ObjectSet(LabelName,OBJPROP_XDISTANCE,X);
  ObjectSet(LabelName,OBJPROP_YDISTANCE,Y);
  ObjectSetText(LabelName,Code,Size,"Wingdings",Color); 
  return;
}
//+------------------------------------------------------------------+
//| script                                                           |
//+------------------------------------------------------------------+
int start() {
  int CurY = 10;
  string SwPart1Name = ScriptName + "SwPart1";
  SetWingdingsLabel(SwPart1Name,"\xA4",1,10,30,Red,16);
  string SwPart2Name = ScriptName + "SwPart2";
  SetWingdingsLabel(SwPart2Name,"\x48",1,14,CurY,Red,16);

  while (CurY == 10) {
//  Вставлять код здесь  

    Sleep(100);
    CurY = ObjectGet(SwPart2Name,OBJPROP_YDISTANCE);
  }

  Sleep(Delay);
  ObjectDelete(SwPart1Name);
  while (ObjectFind(SwPart2Name) >= 0) ObjectDelete(SwPart2Name);
  Comment("");
  return (0);
}

в данном коде замкнутый цикл не дает завершиться функции старт и поэтому объект не прорисовываться

 
Похоже на правду. Выходит по окончании старта происходит принудительная перерисовка окна? Ну похоже таки добыли зёрнышко знания, неважно есть от него польза или нет :)
Причина обращения: