функция "Бегущая строка"

 

Утилитка по выводу строк.

Строки перемещаются снизу вверх, удобно использовать при отладке. Скорость перемещения задаётся переменной TimeShowInfo;


//+-------
//+------------------------------------------------------------------+
//| вывод строки информации 
//+------------------------------------------------------------------+
#define AUTOR "valenok2003"
int CntStr = 0;
string TxtStr[100] = {"",,""};

void output_string_info(string _Txt, color _Color_Txt)
{  string _Name;
   int _TimeShowInfo = 2,
       _Dist = 15,
       ShiftPoz = 15;
   
//-------------
   if(!REPORT)return;
   if(_Txt != "NULL")
   {  TxtStr[CntStr] = _Txt;
      string _Name_Obj = NAME_EXPERT + "_" + CntStr;
      int PozStr = _Dist*CntStr;
      ObjectCreate (_Name_Obj, OBJ_LABEL, 0, 0, 0);
      ObjectSet    (_Name_Obj, OBJPROP_CORNER, 0);
      ObjectSet    (_Name_Obj, OBJPROP_XDISTANCE, 5);
      ObjectSet    (_Name_Obj, OBJPROP_YDISTANCE, PozStr+ShiftPoz);
      ObjectSetText(_Name_Obj, _Txt, 10, "Arial", _Color_Txt);
      CntStr++;
   }
   if(TimeCurrent() >  StartTimerInf + _TimeShowInfo)
   {  StartTimerInf = TimeCurrent();
      if(CntStr > 0)
      {  for(i = 0; i <= CntStr; i++) 
         {  int _n = i+1;
            _Color_Txt = ObjectGet(NAME_EXPERT + "_" + _n, OBJPROP_COLOR);
            if(i == CntStr-1)
               TxtStr[i] = "";
            else  
               TxtStr[i] = TxtStr[_n];
            PozStr = _Dist*i;
            _Name_Obj = NAME_EXPERT + "_" + i;
            ObjectCreate (_Name_Obj, OBJ_LABEL, 0, 0, 0);
            ObjectSet    (_Name_Obj, OBJPROP_CORNER, 0);
            ObjectSet    (_Name_Obj, OBJPROP_XDISTANCE, 5);
            ObjectSet    (_Name_Obj, OBJPROP_YDISTANCE, PozStr+ShiftPoz);
            ObjectSetText(_Name_Obj, TxtStr[i], 10, "Arial", _Color_Txt);
         }
         CntStr--;
      }
   }
   return;
}
//+-------------------------------------------------------------------
//+-------
Кстати, продолжение развития моего конструктора BlueDream здесь, да простят меня модераторы. Все коды открытые.
 

Да, чуть не забыл, чтобы строки двигались, в функцию start() необходимо вставить код, который должен выполняться на каждом тике.

output_string_info("NULL", Black);
 

Малость доработал, теперь если строка точно такая же (повторяется) - новая строка не создаётся.

//+-------
//+------------------------------------------------------------------+
//| вывод строки информации
//+------------------------------------------------------------------+
int CntStr = 0;
string TxtStr[100] = {"",,""};

void output_string_info(string _Txt, color _Color_Txt)
{  string _Name;
   int _TimeShowInfo = 2,
       _Dist = 15,
       ShiftPoz = 15;
   
//-------------
   if(!REPORT)return;
   if(_Txt != "NULL")
   {  if(TxtStr[CntStr-1] == _Txt) CntStr--;
      TxtStr[CntStr] = _Txt;
      string _Name_Obj = NAME_EXPERT + "_" + CntStr;
      int PozStr = _Dist*CntStr;
      ObjectCreate (_Name_Obj, OBJ_LABEL, 0, 0, 0);
      ObjectSet    (_Name_Obj, OBJPROP_CORNER, 0);
      ObjectSet    (_Name_Obj, OBJPROP_XDISTANCE, 5);
      ObjectSet    (_Name_Obj, OBJPROP_YDISTANCE, PozStr+ShiftPoz);
      ObjectSetText(_Name_Obj, _Txt, 10, "Arial", _Color_Txt);
      CntStr++;
   }
   if(TimeCurrent() >  StartTimerInf + _TimeShowInfo)
   {  StartTimerInf = TimeCurrent();
      if(CntStr > 0)
      {  for(i = 0; i <= CntStr; i++) 
         {  int _n = i+1;
            _Color_Txt = ObjectGet(NAME_EXPERT + "_" + _n, OBJPROP_COLOR);
            if(i == CntStr-1)
               TxtStr[i] = "";
            else
               ObjectDelete(NAME_EXPERT + "_" + i);
               TxtStr[i] = TxtStr[_n];
            PozStr = _Dist*i;
            _Name_Obj = NAME_EXPERT + "_" + i;
            ObjectCreate (_Name_Obj, OBJ_LABEL, 0, 0, 0);
            ObjectSet    (_Name_Obj, OBJPROP_CORNER, 0);
            ObjectSet    (_Name_Obj, OBJPROP_XDISTANCE, 5);
            ObjectSet    (_Name_Obj, OBJPROP_YDISTANCE, PozStr+ShiftPoz);
            ObjectSetText(_Name_Obj, TxtStr[i], 10, "Arial", _Color_Txt);
         }
         CntStr--;
      }
   }
   return;
}
//+-------------------------------------------------------------------
//+-------
 
valenok2003:
Кстати, продолжение развития моего конструктора BlueDream здесь, да простят меня модераторы. Все коды открытые.
Не простят. Уберите ссылку на сайт и дайте ссылку на профиль, как положено.
 
granit77:
Не простят. Уберите ссылку на сайт и дайте ссылку на профиль, как положено.

:)

А в профиль положите ссылку на сайт. А то теперь ни здесь ни там нету ссыли.

Ну интересно же. Я вапче конструкторы лублу.

 
MetaDriver:

:)

А в профиль положите ссылку на сайт. А то теперь ни здесь ни там нету ссыли.

Ну интересно же. Я вапче конструкторы лублу.


Положил :-)))
 

Пример работы бегущей строки и её улучшенный код можно посмотреть в этом советнике.

 
valenok2003:

Пример работы бегущей строки и её улучшенный код можно посмотреть в этом советнике.


Ссылку поправил, _my надо убирать
Причина обращения: