Habe mal ne Frage zu einem Button. Ich möchte gerne, dass eine Variable den Wert true annimmt, solange der Button gedrückt ist. Wird der Button losgelassen, soll die Variable den Wert false annehmen. Wie realisiert man so was? Habe das ganze mal mit „OnClickToggle“ probiert, aber da wird die Variable nach drücken des Buttons true und nach erneuten drücken wieder false.
diese Funktion zu realisieren ist leider nicht möglich.
Wenn Du Dir mal die Funktionsweise klar machst, wirst Du verstehen, warum das so ist:
Ein OnClick-Event beinhaltet immer ein „Drücken“ (DOWN) und wieder „Loslassen“ (UP). Der gesamte Ablauf bildet ein einzige geschlossene Einheit. Es ist nicht möglich in diese Einheit hineinzuschauen und Teil-Events daraus abzuleiten.
Das ist auch der Grund, warum ein Klick immer erst beim Loslassen der Maustaste eine Wirkung zeigt. Dies ist besonders augenfällig beim TrackBar-Tool. Viele Neulinge erwarten, dass man damit einen Wert kontinuierlich verändern kann und sind dann meist sehr enttäuscht, wenn der Wert erst beim Loslassen einen Sprung macht.
Danke HJH für die ausführliche Erklärung.
Ich schildere mal genauer was ich machen will, vielleicht gibt es da eine andere Lösung dafür. Ich verwende IPS/Designer als Visu. Hardwareseitig arbeitet eine S7. Ich möchte, wenn ich auf der Visu(im Designer) einen Taster(Button) klicke, ein Bit in einem DB auf 1 setzen. Lasse ich den Taster los, soll das Bit wieder 0 werden. Das Schreiben in die S7 ist nicht das Problem (dank Steiner gelöst). Ich hatte mir das relativ einfach vorgestellt mit einen einfachen Button als Taster, ist es aber scheinbar doch nicht. Welch Möglichkeit gibt es denn da noch?
Na ja, starte doch ein Script in dem du die Variable auf True setzt und läßt dann über eine Zeit die Variable wieder auf False setzen. Der Nachteil ist dann nur, das du dich auf eine Zeit festlegen mußt und das Ereignis nicht über die Dauer des Tastendrucks steuern kannst.
Entweder über die Sleep Funktion von IPS oder über ein SetScriptTimer.
ich kann dir folgendes kleines Script für die „Tastfunktion“ anbieten.
Brauchst nur noch eine Variable „Anzeige-Taste“ und mit der Designer „Taste“ das Script triggern. Über die Variable „Anzeige-Taste“ steuer ich auch das Bild oder den Text der Taste.
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : Taste-Aktiv.ips.php
Trigger :
Interval :
*/
//Taste aktiv
//**********
SetValueBoolean("Anzeige-Taste", true); //Variable für die Anzeige oder Triggerung eines anderen Scripts
Echo "Taste aktiv
\r"; //Testausgabe
IPS_Sleep(1000); //Anzeigezeit 1000 = 1 Sek.
//Taster ruhestellung
//***********
SetValueBoolean("Anzeige-Taste", false);
Echo "Taste Ruhestellung
\r"; //Testausgabe
?>