О графических объектах

 

Написал вот такой скрипт -

int start() {

int St_Shift=1200, L=20, l=10;
string  Symb=Symbol(), Text, Rect, Name;
datetime St, Fin;

Comment("\n","\n","   ПУСК");

for (int j=1; j<35; j++)
 {
  St=iTime(Symb, PERIOD_M1, St_Shift-(L+l)*j);
  Fin=iTime(Symb, PERIOD_M1, iBarShift(Symb, PERIOD_M1, St, false) - L);
  Text=StringConcatenate("П", j);
  Rect=StringConcatenate("Прям", j);
  ObjectCreate(Rect, OBJ_RECTANGLE, 0, St, Bid-2*Point, Fin, Ask+2*Point);
  ObjectSet(Rect, OBJPROP_COLOR, PaleTurquoise);
  ObjectCreate(Text, OBJ_TEXT, 0, St, Ask+7*Point);
  ObjectSetText(Text, Text, 10, "Times New Roman", Red); 
 }
 
Comment("\n","\n","   ПАУЗА"); 
Sleep(2000); 
Comment("\n","\n","   УДАЛЕНИЕ");
 
for(int i=0; i < ObjectsTotal(); i++)
 {
  Name=ObjectName(i);
  ObjectDelete(Name);
  Sleep(200);
 }
 
Comment("\n","\n","   СТОП"); Sleep(2000); Comment("");
       
return(0); }


По идее, выставляет несколько объектов, а потом их же и удаляет.

В реальности все происходит не так. Не соблюдается последовательность действий,

и остается куча неудаленных объектов.

Кто-нибудь объяснит?

 

При удалении надо цикл в обратную сторону крутить.

for(int i=ObjectsTotal()-1; i>=0 ; i--)
 
Integer:

При удалении надо цикл в обратную сторону крутить.


Спасибо, Удалять стал все.

Но если цикл удаления дополнить вот так -

for(int i=ObjectsTotal()-1; i>=0; i--)
 {
  Name=ObjectName(i);
  ObjectDelete(Name);
  Comment("\n","\n","   УДАЛЯЕМ ОБЪЕКТ  ",Name);
  Sleep(1000);
 }

то видно что последовательность удаления напоминает отфонарную

 
Чтоб не казалось "отфонарной",не забудьте в конец цикла добавить WindowRedraw()
 
xrust:
Чтоб не казалось "отфонарной",не забудьте в конец цикла добавить WindowRedraw()

Спасибо.