Hallo!
Ist das ein Bug oder versteh ich gerade was total falsch? Ich habe eine Ereignisstruktur mit dem Ereignis Maustaste gedrückt. Man sollte ja dann annehmen, dass er in den Case reinspringt wenn der zugehörige button gedrückt wird. In meinem einfachen Beispiel ist eine LED mit dem Button verbunden und soll so anzeigen, dass LabVIEW in den Case gesprungen ist. Der Button bleibt jedoch meistens auf False und nur ganz selten springt er um auf True. Geht man in den Debug-Modus klappt es häufiger. Kann mir das jemand erklären?
LV 8.5
Gruß Marv
' schrieb:Der Button bleibt jedoch meistens auf False und nur ganz selten springt er um auf True.
Nur weil du die Maustaste drückst, heißt das noch lange nicht, dass sich der Wert des Bedienelementes ändert.
Sobald du die Maus drückst - links oder rechts - wird das Event ausgelöst. So wie du wolltest. Der Button wird erst nach einer bestimmten Zeit nach Drücken der Maustaste "angeklickt".
Kann ich eigentlich nicht so ganz nachvollziehen. Das Ereignis ist ja schon auf die Schaltfläche bezogen. Und wie erklährst Du Dir das veränderte Verhalten im Debugging Modus? Es kann ja eigentlich nicht sinn der Sache sein, dass ein Ereignis zufällig und unvorhersehbar geschieht. Und es hängt meines Erachtens nicht davon ab wie lange ich auf den Button klicke. Naja.. wenn das so sein soll ^^
' schrieb:Das Ereignis ist ja schon auf die Schaltfläche bezogen.
Stimmt. Das Ereignis heißt aber MouseDown, und nicht ValueChanged.
Zitat:Und wie erklährst Du Dir das veränderte Verhalten im Debugging Modus?
Mit deinem langsamen Rechner? Möglichlicherweise auch mit deinem Betriebssystem? Auf meinem kommt da nur false raus - und nicht ab und zu true.
Zitat:Es kann ja eigentlich nicht sinn der Sache sein, dass ein Ereignis zufällig und unvorhersehbar geschieht.
Welches Ereignis ist zufällig und unvorhersehbar? Das Ereignis heißt noch immer MouseDown - und nicht ValueChanged! Und sooft du MouseDown machst - ob links oder rechts - das Event wird immer ausgeführt.
Zitat:Und es hängt meines Erachtens nicht davon ab wie lange ich auf den Button klicke.
Was hängt von der Längeb des Klickens ab? Das Setzen des Bits? Das spielt aber für das Ereignis MouseDown gar keine Rolle.
Wenn du siehst, dass der Button gedrückt ist, also true, ist das Event - im Normalfall - schon ewig abgearbeitet.
' schrieb:Kann ich eigentlich nicht so ganz nachvollziehen.
Man kann das sicher erklären, und IchSelbst liegt meiner Meinung nach richtig. Aber alle Erklärungen wären hier doch nur von rein schöngeistigem Interesse. Für Dich ist erst mal wichtig zu wissen, daß in 95% aller dieser Anwendungeen das Event "Wertänderung" das Passende ist und nicht irgendwelche Maustasten-Events. Wenn Du dann noch das passende Schaltverhalten wählst, dann dürften keine Wünsche mehr offen sein.
Ok! Danke für Eure Antworten. War auch mehr Interessehalber. Kann auch sein, dass es an meinem langsamen Firmen-Laptop liegt, aber das unvorhersehbare Verhalten fand ich einfach komisch.
' schrieb:Ok! Danke für Eure Antworten. War auch mehr Interessehalber. Kann auch sein, dass es an meinem langsamen Firmen-Laptop liegt, aber das unvorhersehbare Verhalten fand ich einfach komisch.
Ist nicht unvorhersehbar sondern einfach nicht eindeutig festgelegt. MouseDown wird generiert im Moment wo Du mit der Mouse über dem Kontroll bist UND Du auf die Maustaste drückst. Dabei ist der Status des Kontrolls (True/False) völlig unwichtig. Das könnte noch True sein von der vorigen Aktiviering, sicher wenn der Rechner langsamer ist.
MouseDown/Up sind einfach sehr direkte Events. ValueChanged ist ein viel zuverlässiger Indikator dass etwas passiert ist da zur Auswertung davon sowohl das eingestellte Verhalten des Kontrolls (Latched, usw) als auch entsprechende interne Logik verwendet wird um zu garantieren dass das Kontroll wirklich den neuen Wert hat im Moment wo das Event generiert wird.
Rolf Kalbermatter