' schrieb:Weiterhin möchte ich anmerken, dass es evtl. Sinn machen tutet, im EVENT abzufragen, in welche "Richtung" der Button seinen Wert ändert!
Im Prinzip hast Du da natürlich recht. Aber so wie ich es vorgeschlagen habe - Latch when released und Knopf innerhalb des Ereigenis-Case - ist es wirklich unnötig, und das ist der am häufigsten vorkommende Fall.
Der Knopf wird gedrückt - da findet noch keine Wertänderung statt. Erst wenn er losgelassen wird. geht die Wertänderung von false nach true. Der Knopf wird wird mit dem Auslesen im Ereignis-Case wieder zurück auf false gesetzt (das ist aber kein neues Bedienereignis). Man kann als Bediener am Knopf herumtricksen wie man will, es findet niemals eine Ereignis true-false statt und folglich muß der Fall auch nicht behandelt werden.
Der Spaß ist aber zu Ende, wenn man vom Schalter ein lokale Variable braucht. Dann läßt sich der Schaltmodus Latch nicht mehr verwenden, und dann hast Du recht. Aber: auch wenn man das nicht macht, bleibt die mögliche Katastrophe in vielen Fällen aus.
Beispiel: Stop-Button mit lokalen Variablen.
Man wird ihn, wenn er nicht als Latch programmiert war, programmgesteuert mit eine Lokalen Variablen wieder zurücksetzen
Fall 1: Der Knopf wird bei Initialisierung des Programms mit lokaler Variablen zurückgesetzt. Optisch unschön daran ist, daß der Knopf nach dem Beenden das Programm erst mal gedrückt bleibt. Es kann aber nicht vorkommen, daß im Ereignais-Case Stop ein true-false Case vorkommt, denn dar Knopf wird ja nur ein einziges Mal gedrückt.
Fall 2: Der Kopf wird bei Beendigung das Programms mit lokalere Variablen rückgesetzt. Hier ist - zumindest solange das Programm noch in Entwicklung ist - eine Komplikation denkbar. Man drückt den Stop-Knopf, das Programm wird aber wegen interner Fehler nicht beendet. Man stoppt daraufhin das Programm mit roher Gewalt. Das Kopf wird dann nicht rückgesetzt, und der nächste Programmstart beginnt mit gedrücktem Knopf. Das nächste Bedienereignis beim Betätigen das Stop-Knopfes ist dann der true-false Übergang. Wenn man die beiden Fälle nicht unterschieden hat, dann stoppt das Programm auch dann. Aber was ist schlimm daran, wenn jedes Herumfummeln am Stop-Knopf den Abbruch bewirkt? Wozu sonst ist der Knopf denn da?