LabVIEWForum.de
Events filtern, wenn GUI im Hintergrund - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Events filtern, wenn GUI im Hintergrund (/Thread-Events-filtern-wenn-GUI-im-Hintergrund)



Events filtern, wenn GUI im Hintergrund - dimitri84 - 06.03.2012 09:07

Hallo Jungs,

ich habe ein Main VI, das einen Dialog aufruft. Der Dialog ist als "Dialog" definiert und bleibt daher brav im Vordergrund außer etwas modales kommt daher. Bis dahin prima. Wenn der Benutzer jetzt neben den Dialog patscht, gar auf einen Button, merkt sich die Eventstruktur das mit ihrem Elefantengedächnis, und führt das Event nach der Dialogkaskade durch. Das gefällt mir nicht (würde man jetzt - glaube ich - auf Facebook sagen). Ich dachte durch setzen des Häkchens unten (... erst verarbeiten, EreignisCase abgeschlossen) wär das so - war aber nicht.

Übersehe ich was?

[attachment=38958]
[attachment=38959]

Gruß dimitri


RE: Events filtern, wenn GUI im Hintergrund - dimitri84 - 06.03.2012 14:19

Mir ist klar geworden, dass es eine Architekturschwäche ist, dass ich zeitaufwendigen Code in der Eventstruktur abarbeite. Ansonsten hätte ich nämlich die Eigenschaft "IstImVordergrund" abfragen können. Aber ich wollte es ganz bewusst so haben, dass die Eventstruktur blockiert ist, wenn die Dialoge laufen.


RE: Events filtern, wenn GUI im Hintergrund - Lucki - 07.03.2012 08:21

(06.03.2012 09:07 )dimitri84 schrieb:  Übersehe ich was?
Nein, Du bist lediglich das unschuldige Opfer einer falschen Beschreibung (vielleicht ist es auch nur ein falsche Übersetzung) . Das von Dir gewünschte Verhalten erreicht man gerade dadurch, das man das Häckchen nicht setzt. Bei dem Häkchen müßte es statt

"Benutzereingriffe auf dem Frontpanel erst verarbeiten, wenn der Ereignis Case abgeschlossen ist"

richtig heißen:
"Benutzereingriffe auf dem Fronpanel sich merken und verarbeiten, wenn der Ereignis Case abgeschlossen ist"

D.h ohne dieses Häkchen werden FP-Benutzereingriffe, während der Ereignsicase verarbeitet wird, nicht registriert - und das ist genau das was Du haben willst. Das Wörtchen "erst" in der von NI gewählten Fomulierung suggeriert aber, daß bei nicht gesetztem Häckchen Benutzereingriffe ebenfalls verarbeitet werden, und zwar sofort. Und das ist falsch.


RE: Events filtern, wenn GUI im Hintergrund - dimitri84 - 07.03.2012 08:43

(07.03.2012 08:21 )Lucki schrieb:  D.h ohne dieses Häkchen werden FP-Benutzereingriffe, während der Ereignsicase verarbeitet wird, nicht registriert - und das ist genau das was Du haben willst.

Leider nicht. Ob mit oder ohne Häkchen, die "fälschlich" ausgelösten Events werden immer ausgelöst. Der Unterschied ist lediglich, dass ohne Häkchen das Bedienelement seine Werteänderung direkt erfährt und nicht erst nach Abarbeitung des laufenden Events. Ist also nur Kosmetik.


Dimitri


RE: Events filtern, wenn GUI im Hintergrund - jg - 07.03.2012 09:14

Hmm Dein Bsp-Dialog ist doch "nur" als "floating" definiert. Damit bleiben alle anderen VIs und FP-Events in diesen weiterhin aktiv, auch wenn sie nicht direkt im Vordergrund sind. Du kannst das VI im Hintergrund ja auch "aktivieren", indem du auf die Titelleiste klickst. Es ist also völlig normal, dass sich ein solches VI auch die Events erhält und ausführt, die gerade in seinem FP ausgeführt werden.

Wieso definierst du den Dialog den nicht als "modal", so wie du es schon selber angedeutet hast?

Gruß, Jens


RE: Events filtern, wenn GUI im Hintergrund - dimitri84 - 07.03.2012 11:14

(07.03.2012 09:14 )jg schrieb:  Hmm Dein Bsp-Dialog ist doch "nur" als "floating" definiert. Damit bleiben alle anderen VIs und FP-Events in diesen weiterhin aktiv, auch wenn sie nicht direkt im Vordergrund sind.

Wieso definierst du den Dialog den nicht als "modal", so wie du es schon selber angedeutet hast?
Weil "modal" der OnScreen-Tastatur vorbehalten ist, die ihrerseits immer über dem Dialog sein muss. Touchscreen...
Mit zwei modalen Fenstern hab ich's nicht ausprobiert - schien mir nicht besonders sauber. Aber einen Test ist es wert.

(07.03.2012 09:14 )jg schrieb:  Du kannst das VI im Hintergrund ja auch "aktivieren", indem du auf die Titelleiste klickst.
Das VI im Hintergrund soll ja schlummern. Der Benutzer soll nur dort interagieren können, wo es grad aktuell ist.



Edit: Gegen zwei modale Fenster scheint nix zu sprechen. Das zuletzt aufgerufene gewinnt. Jens hat mal wieder ein klassisches Brett vorm Kopf entfernt.


RE: Events filtern, wenn GUI im Hintergrund - Lucki - 07.03.2012 11:54

(07.03.2012 08:43 )dimitri84 schrieb:  Leider nicht. Ob mit oder ohne Häkchen, die "fälschlich" ausgelösten Events werden immer ausgelöst.
Entschudigung, habs nachgestellt, Du hast Recht. Bei mir hatte das mal funktioniert, aber ich weiß im Moment nicht, was damals anders war als jetzt.


RE: Events filtern, wenn GUI im Hintergrund - dimitri84 - 07.03.2012 12:37

(07.03.2012 11:54 )Lucki schrieb:  Bei mir hatte das mal funktioniert, aber ich weiß im Moment nicht, was damals anders war als jetzt.

Ich weiß, das hatte ich auch im Hinterkopf, dass Du das immer mit dem enthaken gelöst hast - bin auch immer davon ausgegangen, dass das so funktioniert. Bis ich's mal ausprobiert habe.