LabVIEWForum.de - Schließen eines Programms durch Schließen-Button

LabVIEWForum.de

Normale Version: Schließen eines Programms durch Schließen-Button
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

ich beende mein Programm über einen Exit-Button. Dann kann ich noch etwas abspeichern und eine DLL entladen. Wie kann ich das machen, wenn das Programm über den Schließen-Button rechts oben geschlossen wird?
Ich weiß ich könnte den Schließen-Button über die VI-Eigenschaften (Schließen des Fensters möglich) deaktivieren. Aber diese Lösung ist nicht schön.
Hallo,

wenn du eine Eventstruktur verwendest, kannst du auf das "Panel Close" Event reagieren.

Näheres dazu findet sich auch in der Hilfe:

Panel Close Event
http://zone.ni.com/reference/en-XX/help/...l_closing/

Beste Grüße,
NWO
Du kannst diese Ereignis (<Application -> Application Instance Close? oder <This Vi> -> Panel Close?) in der Event-Strukur abfragen und dann ensprechend reagieren.

Gruß, Jens
Wie meist üblich, speicherts Du beim Schließen mit dem Exit-Button noch etwas ab, schließt offene Files etc. Das sollte beim Schließen mit dem Schließkästchen genau so geschehen, und deshalb mache ich es so:
Die Betätigung löst, wie schon vorgeschlagen, ein Ereignis aus. Dort lege ich fest "Schließen des VIs verwerfen" - das VI wird also zunächst nicht geschlossen. Statt dessen wird dort mit einem Eigenschaftknoten "Wert signalisierend" das weitere Ereignis "Exit Button Wertänderung" ausgelöst. Damit läuft dann alles Weitere exakt so ab, als wenn der Exit-Button betätigt worden wäre. (oder hat jemand eine bessere Idee?)
(02.03.2011 18:45 )Lucki schrieb: [ -> ]... Exit-Button betätigt worden wäre. (oder hat jemand eine bessere Idee?)

Bessere Idee vielleicht nicht, eher eine andere.
Ein Exit-Button sieht finde ich häufig nicht wirklich Windows-like aus (und versteckt sieht's dann für'n Programmier wie ein Q'n'D-Hack aus). Meist soll beim Schließen ja an eine zentrale Stelle (Main-QDMH od. eben andere Architektur) eine allgemeine Deinit/Quit-Message geschickt werden. Das läßt sich auch in ein Callback-VI packen, daß an das Close-Event registriert ist.
OT: Ist der QDMH ein Quick and Dirty Main Handler?
(02.03.2011 19:38 )schrotti schrieb: [ -> ]OT: Ist der QDMH ein Quick and Dirty Main Handler?
OT: Schöne Idee eigentlich! Beer

QDMH steht für Queue Driven Message Handler, das ist ein (das) zentrale Pattern im LV Advanced Architectures Kurs seit der Umstellung von LV Advanced I.
Das ist eine im Endeffekt ein Queued Message Handler (QMH), nur das mit der "neuen" Nomenklatur wohl der Unterschied zu anderen QMHs basierend auf FGV/SR (z.b. JKI State Machine) betont wird. Siehe auch die AMC Library von NI, das ist damit dann auch ein QDMH.
Danke. Die Abkürzung kam mir doch irgendwie bekannt vor... Big Grin
(02.03.2011 20:49 )macmarvin schrieb: [ -> ]Handler, das ist ein (das) zentrale Pattern im LV Advanced Architectures Kurs seit der Umstellung von LV Advanced I.
Du bist Vollprofi, ich bin höchstesn ein begabter Amateur, und dementsprechend verhalten sich die beiden Lösungsvorschläge. Damit ich/wir auch etwas von der Lösung verstehen, könntest Du ein Beispiel aus der Labview-Hilfe oder sonst einen Link nennen, wo man das näher studieren kann?
Der Absatz "Queued Message Handler Design Pattern" auf der AMC Lib Seite gibt einen recht guten Überblick bzw. die Links unter References sind auch brauchbar. Je nachdem ob man halt ein UI braucht oder nicht, kann die Schleife mit dem Eventhandler weg.
Seiten: 1 2
Referenz-URLs