Einzelnen Beitrag anzeigen
  #2 (permalink)  
Alt 17.10.21
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Max2018 Beitrag anzeigen

Code:
int PauseEA;

void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam)
  {
   if(id==CHARTEVENT_OBJECT_CLICK)
     {
      Print ("Now inside OnChartEvent");
      if(sparam=="PauseButton")
        {
         PauseEA=1;;      
        }
     }
  }
Ein Knopf kann entweder reingedrückt sein oder nicht - das siehst Du am besten bei dreidimensionalen
ObjectSetInteger(0,"PauseButton",OBJPROP_BORDER_CO LOR,clrNONE);

Dann kommt es drauf an, was genau Du willst. Hier ein Beispiel, wo solange Pause herrscht, wie der Knopf reingedrückt ist.
Wird dann ein zweites Mal auf den (jetzt reingedrückten) Knopf gedrückt, dann wird die Pause aufgehoben und der Knopf wieder auf ungedrückt gesetzt.
So kann man mittels Knopfdruck die Pause an- und abschalten.
Code:
   // ============================= buttons
   if(id==CHARTEVENT_OBJECT_CLICK)
   {
      if(sparam=="PauseButton")                        //KannGedrücktOderUngedrücktSein
      {
         bool State=ObjectGetInteger(0,"PauseButton",  //JetztGedrücktOderNicht?
                                     OBJPROP_STATE);
         Print(__FUNCTION__,
               " Pause pressed",                       //WelcherKnopfGedrückt
               " PauseEA=",(int)PauseEA,               //BisherigerWert
               " State=",(int)State      );            //BisherigerGedrücktwert
         if(ButState)                                  //VorherGedrückt:PauseIstAn
         {
            PauseEA=0;                                 //JetztPauseAbschalten
            ObjectSetInteger(0,"PauseButton"           //AufUngedrücktSetzen
                             OBJPROP_STATE,false);
         }
         else                                          //VorherUngedrückt:PauseIstAus
         {
            PauseEA=1;                                 //JetztPauseAnschalten
            ObjectSetInteger(0,"PauseButton"           //AufUngedrücktSetzen
                             OBJPROP_STATE,true);      //AufGedrücktSetzen
         }
      }//sparam=="PauseButton"
   }//id==CHARTEVENT_OBJECT_CLICK
Aber Vorsicht, wenn der EA durch irgendwelche Ereignisse neu geladen wird, hast Du den Ursprungszustand wieder, also eventuell sicherstellen, daß irgendwo außerhalb kontrolliert wird, ob er laufen darf.
AVT