Zitat:
Zitat von Max2018
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