Ich habe ein Problem mit der Reaktion auf Knopfdruck, wenn ich mehrere Indikatoren (-Knöpfe) auf einem Chart habe. Die Knöpfe der Indikatoren sind alle nebeneinander links unten positioniert (siehe Bild).
vorher festgelegt sind für alle Indikatoren identisch
- string LETTERSHOW="S", LETTERHIDE="H";
- int DoHiding=0;
Jeder einzelne Indikator definiert seinen Knopf fest, so:
Code:
// ======================= Button von Indikator 1
#define ButtonText "Vpta" //TextOnButton
#define ButtonName "VALpta" //NameOfButtonObject
// ======================= Button von Indikator 2
#define ButtonText "Bdfb" //TextOnButton
#define ButtonName "BNDdfibo" //NameOfButtonObject
Jeder Indikator hat seine Anweisungen, was passieren soll so:
Code:
void OnChartEvent(const int id, const long &lparam,
const double &dparam, const string &sparam )
{
// ============================== letter
if(id==CHARTEVENT_KEYDOWN)
{
if (lparam==StringGetCharacter(LETTERSHOW,0)) { DoHiding=-1; } //NoHiding
else if(lparam==StringGetCharacter(LETTERHIDE,0)) { DoHiding= 1; } //DoHide
else DoHiding=0; //Nothing
}
// ============================== button
if(id==CHARTEVENT_OBJECT_CLICK)
{
if(sparam==ButtonName)
{
if (DoHiding==-1)
{
ReInit();
ChangeButton(0); //IsPressed->ToUnpressed
DoHiding=0; //ResetToNeutral
}
else if(DoHiding== 1)
{
ObjectsDeleteAll(ChartID(), PFX);
ChangeButton(1); //IsNotPressed->ToPressed
DoHiding=0; //ResetToNeutral
}
else if( DoHiding==0 && SaveConfigToFile() )
{
ReInit();
}
}
}
}
Die einzelnen Button sind immer 35 Pixel breit und werden mit Abstand 0 nebeneinander gesetzt (also immer +35 für die xPosition).
Meine Terminal -Extras - Optionen - Objekte - Empfindlichkeit habe ich schon auf 2 Pixel runtergesetzt.
Dennoch passiert folgendes: wenn ich auf einen Knopf drücke, um den Indikator z.B. zu verstecken, wird nicht nur dieser Indikator versteckt, sondern willkürlich irgendein weiterer Indikator auch. Im Code kann ich keinen Fehler finden - wenn ich zuerst ein "H" sende, das für alle Indikatoren gleich ist: durch #define sind die Knöpfe eindeutig voneinander zu unterscheiden und es sollte nur derjenige Indikator reagieren, dessen Knopf anschließend gedrückt wird; es gibt auch nirgends irgendeine Fehlermeldung.
Hat jemand eine Idee, woran das liegen könnte?
AVT