2 действия с 1 кнопки клавиатуры, как реализовать?

 
Здравствуйте, Прошу вас подсказать как заставить работать 1 действие (показ) при нажатии кнопки с клавиатуры, и 2-е действие (удаление) при повторном нажатии с клавиатуры?

Сейчас у меня выводится информация через 2 кнопки вот так:
void OnChartEvent(const int id,         // идентификатор события   
                  const long& lparam,   // параметр события типа long 
                  const double& dparam, // параметр события типа double 
                  const string& sparam  // параметр события типа string 
                  )
  {
//--- нажатие кнопки на клавиатуре 
   if(id==CHARTEVENT_KEYDOWN)
     {
      if(lparam==38) PutLabel((string)atr);
      if(lparam==40) ObjectDelete(0,"L");      
     }
  }

Как вывести тоже самое через одну кнопку, 1-е нажатии включение, 2-е отключение(удаление)
СПАСИБО!!!

 
Dmitry Ivkin:
Здравствуйте, Прошу вас подсказать как заставить работать 1 действие (показ) при нажатии кнопки с клавиатуры, и 2-е действие (удаление) при повторном нажатии с клавиатуры?

Сейчас у меня выводится информация через 2 кнопки вот так:

Как вывести тоже самое через одну кнопку, 1-е нажатии включение, 2-е отключение(удаление)
СПАСИБО!!!

void OnChartEvent(const int id,         // идентификатор события   
                  const long& lparam,   // параметр события типа long 
                  const double& dparam, // параметр события типа double 
                  const string& sparam  // параметр события типа string 
                  )
  {
//--- нажатие кнопки на клавиатуре 
   if(id==CHARTEVENT_KEYDOWN)
     {
      if(lparam==38)
	{
	   static bool draw=true;
	   if(draw)
	   {"Рисуем объект";draw=false;}
	   else
	   {"Удаляем объект;draw=true;"}
	}     
     }
  }

можно так

 
Andrii Djola:

можно так

Спасибо но так не подходит, при смене ТФ удаление работает только со 2-го раза, т.е приходится 2 раза нажимать. Как еще можно?

 
Dmitry Ivkin:

Спасибо но так не подходит, при смене ТФ удаление работает только со 2-го раза, т.е приходится 2 раза нажимать. Как еще можно?

при смене тф нужно проверять что сейчас "удаление" или "показ" и соответственно устанавливать флаг

 
Taras Slobodyanik:

при смене тф нужно проверять что сейчас "удаление" или "показ" и соответственно устанавливать флаг

Пожалуйста подскажите как это сделать?

 
bool draw;


int OnInit()
{
   if (ObjectFind(0,"L")>=0)
      draw=false;
   else
      draw=true;
}


void OnChartEvent(const int id,         // идентификатор события   
                  const long& lparam,   // параметр события типа long 
                  const double& dparam, // параметр события типа double 
                  const string& sparam  // параметр события типа string 
                  )
{
//--- нажатие кнопки на клавиатуре 
   if(id==CHARTEVENT_KEYDOWN)
     {
      if(lparam==38)
           {
           if(draw)
              {"Рисуем объект"; draw=false;}
           else
              {"Удаляем объект"; draw=true;}
           }     
     }
}
 
Taras Slobodyanik:

Огромнейшее спасибо!!! круто!

 
Taras Slobodyanik:

А есть объектов куча? к каждому писать чтоли:

   if (ObjectFind(0,"L")>=0)
      draw=false;
   else
      draw=true;
 
Taras Slobodyanik:

у меня выводится так:

            ObjectSet("1", OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS);  
            ObjectSet("2", OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS);  
            ObjectSet("3", OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS);  
            ObjectSet("81", OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS);  
            ObjectSet("82", OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS);  
            ObjectSet("83", OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS);  
            ObjectSet("91", OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS);  
            ObjectSet("92", OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS);  
            ObjectSet("93", OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS);  
            ObjectSet("81", OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS);  
            ObjectSet("81", OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS);  
            ObjectSet("81", OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS);  
            ObjectSet("81", OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS);  
            ObjectSet("81", OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS); 

эти при 1 условии, при 2-м в all_periods, как мне реализовать подскажите пожалуйста

 
Dmitry Ivkin:

А есть объектов куча? к каждому писать чтоли:

зависит что вам нужно

если к каждому объекту своя кнопка, то да проверять каждый объект для каждой кнопки
если кнопка одна на всех, то можно проверять только один объект (или в цикле перебирать)

можно создавать невидимый объект где-нибудь внизу, с ценой 0, и проверять его (или хранить в нём флаги/описание/текст)

 
Taras Slobodyanik:

зависит что вам нужно

если к каждому объекту своя кнопка, то да проверять каждый объект для каждой кнопки
если кнопка одна на всех, то можно проверять только один объект (или в цикле перебирать)

можно создавать невидимый объект где-нибудь внизу, с ценой 0, и проверять его (или хранить в нём флаги/описание/текст)

понял что не полeчается потому что я пытаюсь не сам объект а сет к объекту применить:

            ObjectSet("MEGA", OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS);      
            draw=false;
            }
         else
            {            
            ObjectSet("MEGA", OBJPROP_TIMEFRAMES, OBJ_ALL_PERIODS); 
            }

Пожалуйста ответьте как сделать?

Сам объект создаётся в другом месте