Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 15.02.21
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard Button Reaktion bei mehreren Indikatoren

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
Angehängte Grafiken
Dateityp: jpg Unbenannt.JPG (12,3 KB, 4x aufgerufen)