expert advisor - verschiedene Fragen - Seite 37

 

#Objekt gemischt - offen

Ich habe schon ein paar Mal nach diesem Problem gefragt, aber keine guten Antworten bekommen.
Und ich habe bereits versucht, eine Lösung auf SEO zu finden. Nichts dort für mein Problem (es ist möglich, Ursache ist meine begrenzt Englisch)... und dann entschied ich mich, ich könnte noch einmal über dieses Problem mit klarer beschreibt fragen (ich hoffe, ich tun so...).

Deshalb schreibe ich einen Beispielcode, damit Programmierer und Programmiererinnen mein Problem leicht verstehen können.

Anmerkung: beide Objektparameter könnten wie unten sein.

ObjectCreate(0,"Button",OBJ_BUTTON,0,0,0);
ObjectSetString(0,"Button",OBJPROP_TEXT,"Click -");
ObjectSetInteger(0,"Button",OBJPROP_XDISTANCE,100);
ObjectSetInteger(0,"Button",OBJPROP_YDISTANCE,20);
ObjectSetInteger(0,"Button",OBJPROP_XSIZE,80);
ObjectSetInteger(0,"Button",OBJPROP_YSIZE,30);
ObjectSetInteger(0,"Button",OBJPROP_CORNER,CORNER_RIGHT_UPPER);
ObjectSetInteger(0,"Button",OBJPROP_COLOR,clrWhite);
ObjectSetInteger(0,"Button",OBJPROP_BGCOLOR,clrGray);
ObjectSetInteger(0,"Button",OBJPROP_STATE,false);
ObjectSetInteger(0,"Button",OBJPROP_BACK,false);
ObjectSetInteger(0,"Button",OBJPROP_SELECTABLE,false);
ObjectSetInteger(0,"Button",OBJPROP_SELECTED,false);
ObjectSetInteger(0,"Button",OBJPROP_ZORDER,1);

ObjectCreate(0,"Hline",OBJ_HLINE,0,0,WindowPriceMax() - ( 40 * Point ));
ObjectSetInteger(0,"Hline",OBJPROP_COLOR,clrBlue);
ObjectSetInteger(0,"Hline",OBJPROP_BACK,false);
ObjectSetInteger(0,"Hline",OBJPROP_ZORDER,0);

#msissue - Taste hline gemischt

Vielen Dank im Voraus.

 
Aber worum geht es?
 
Marco vd Heijden:
Aber was ist das Problem?
Wenn ich auf eine Schaltfläche klicken muss, wird auch das Hline-Objekt in den ausgewählten Modus versetzt.
 
ObjectCreate(0,"Button",OBJ_BUTTON,0,0,0);
ObjectSetString(0,"Button",OBJPROP_TEXT,"Click -");
ObjectSetInteger(0,"Button",OBJPROP_XDISTANCE,100);
ObjectSetInteger(0,"Button",OBJPROP_YDISTANCE,20);
ObjectSetInteger(0,"Button",OBJPROP_XSIZE,80);
ObjectSetInteger(0,"Button",OBJPROP_YSIZE,30);
ObjectSetInteger(0,"Button",OBJPROP_CORNER,CORNER_RIGHT_UPPER);
ObjectSetInteger(0,"Button",OBJPROP_COLOR,clrWhite);
ObjectSetInteger(0,"Button",OBJPROP_BGCOLOR,clrGray);
ObjectSetInteger(0,"Button",OBJPROP_STATE,false);
ObjectSetInteger(0,"Button",OBJPROP_BACK,false);
ObjectSetInteger(0,"Button",OBJPROP_SELECTABLE,false);
ObjectSetInteger(0,"Button",OBJPROP_SELECTED,false);
ObjectSetInteger(0,"Button",OBJPROP_ZORDER,1);

ObjectCreate(0,"Hline",OBJ_HLINE,0,0,WindowPriceMax() - ( 40 * Point ));
ObjectSetInteger(0,"Hline",OBJPROP_COLOR,clrBlue);
ObjectSetInteger(0,"Hline",OBJPROP_BACK,true);
ObjectSetInteger(0,"Hline",OBJPROP_ZORDER,0);
 
Marco vd Heijden:

Wenn ich jedoch auf die Schaltfläche klicke, wird das Objekt Hline ausgewählt.

Vielen Dank!

 

Wenn Sie einstellen:

ObjectSetInteger(0,"Hline",OBJPROP_BACK,true);

Die Linie wird hinter der Schaltfläche sein.

Aber du hast recht, sie wird trotzdem ausgewählt.

Je nachdem, ob die Linie manuell angepasst werden muss, können Sie also hinzufügen:

ObjectSetInteger(0,"Hline",OBJPROP_SELECTABLE,false);
 
Marco vd Heijden:

Entschuldigung, aber manchmal muss ich "Hline" auswählen.
Es ist sehr wichtig für mich.

Wenn ich auf ein Button-Objekt klicke und Hline ausgewählt wird, ist das sehr gefährlich für mich.

 

Dann müssen Sie die vertikale Skala ein wenig verschieben, damit die Linie unter der Schaltfläche hervorkommt.

Die Schaltfläche benötigt nur einen Klick, während die Linie zwei benötigt. Wenn Sie sich also wirklich darüber ärgern, können Sie einen Zähler starten, der die Linie für eine kurze Zeitspanne als feststehend einstellt, nachdem die Schaltfläche gedrückt wurde.

 
Marco vd Heijden:

Die Schaltfläche benötigt nur einen Klick, während die Linie zwei Klicks benötigt. Wenn Sie sich also wirklich darüber ärgern, können Sie einen Zähler starten, der die Linie für eine kurze Zeit spanne als feststehend einstellt, nachdem die Schaltfläche gedrückt wurde.

Ich habe schon einmal in einem anderen Unterthema danach gefragt - aber ich denke, dass es für mich nicht nützlich sein wird.
Ich habe eine Idee, aber ich weiß nicht, wie ich das machen kann - aber ich weiß sicher, dass ich etwas dafür versuchen werde. Weil ich denke, dass es ein sicherer Weg ist als dieser.

Vielen Dank für Ihre Kommentare.

( Ich werde bald anfangen, über meine Idee zu recherchieren - ich hoffe, ich schaffe es selbst... )

 

Fügen Sie in den Code, der ausgeführt wird, wenn die Schaltfläche angeklickt wird, den Code

ObjectSetInteger(0,"Hline",OBJPROP_SELECTED,false);
ein. Wenn Sie die Zeile beim Klicken auf die Schaltfläche auswählen, wird sie automatisch abgewählt.