|
|
Figures schließen, Callback |
|
Martinuk |
Forum-Century
|
|
Beiträge: 208
|
|
|
|
Anmeldedatum: 18.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.08.2012, 13:40
Titel: Figures schließen, Callback
|
|
Hallo,
ich arbeite gerade an einer GUI und möchte gerne folgendes wissen. Angenommen ich öffne über einen Button bspw. 4 Figures. Schließe ich nun ein Figure über das "x" rechts oben im Figurefenster passiert grundsätzlich ja nichts.
Ich möchte gerne wissen ob man das Schließen eines Figures detektieren kann, sprich das ein Callback ausgelöst wird. Es gibt sowas wie Deletefcn oder CloseRequestfcn soweit ich weiß, nur leider habe ich keine Idee wie man diese in Kombination mit einer GUI einsetzen kann.
Ich möchte gerne feststellen können, ob alle 4 Figures geschlossen sind oder nicht, dazu wäre es denke ich vorteilhaft wenn bei jedem Schließen eines Figures ein Callback ausgelöst wird (am besten immer derselbe).
Wäre super wenn dazu jemand eine Idee hätte.
Besten Dank.
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 06.08.2012, 18:43
Titel:
|
|
Hallo,
Alternativ: Handles der Figures beim Öffnen speichern und dann mit ISHANDLE abtesten, ob das Handle noch gültig ist (wenn nicht, wurde die Figure geschlossen).
Grüße,
Harald
|
|
|
Martinuk |
Themenstarter
Forum-Century
|
|
Beiträge: 208
|
|
|
|
Anmeldedatum: 18.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.08.2012, 13:47
Titel:
|
|
|
|
|
Hallo Harald,
zunächst danke für die rasche Antwort.
Ich habe deinen Vorschlag ausprobiert und hat soweit funktioniert allerdings habe ich Schwierigkeiten deinen Vorschlag mit meinen Gegebenheiten in Einklang zu bringen.
Die Situtation ist, ich habe eine Listbox erstellt wo die Files hinzugefügt werden können die später geplottet werden sollen. Für das Plotten habe ich einen eigenen Button erstellt.
Wird nun der Plot Button gedrückt, werden 4 Figures erstellt verteilt auf den Bildschirm (dabei rückt das MainGUI in den Hintergrund). Zu den Figures wird jeweils ein handle gespeichert, vereinfacht sieht das so aus
Der Grund wieso ich die CloseRequestFcn brauche (zumindest glaube ich das) ist, dass wenn zumindest ein Figure geöffnet ist, die Daten praktisch on-the-fly aktualisiert werden können, sprich man zeigt sich entweder den Betrag/Phase oder Real/Imagteil an. Die Fenster werden dabei nicht neu erstellt sondern nur die XData und YData aktualisiert.
Die Listbox wird solange mindestens ein Figure offen ist (ausser das MainGUI selbst) disabled, sodass der Benutzer die Listbox nicht ändern kann. Sobald kein Figure mehr geöffnet ist, soll diese wieder enabled werden.
Natürlich habe ich einen "Close Figures"-Button, über welchen dies sehr einfach umgesetzt werden könnte, allerdings kann es ja passieren, dass der Benutzer die Figures eben alle praktisch per Hand schließt ('x'). In diesem Fall würde die Listbox disabled bleiben.
Nun habe ich gedacht könnte ich der CloseFcn die handles übergeben und immer wenn diese aufgefrufen wird, den jeweilgen Figure-handle löschen. Sobald alle leer sind kann die Listbox wieder enabled werden.
Gemacht wie folgt
Der CloseFcn habe ich die handles mitübergeben, allerdings sind das nicht die GUIhandles (guidata) sondern die handles zum Zeitpunkt der Übergabe. Problem ist, dass sich die handles zum Zeitpunkt des Erstellen der Figures laufend ändern, aber auch nach nach der for-Schleife zu machen bringt nichts. Die handles können zwar gelöscht oder was auch immer werden, aber die eigentlichen handles (guidata) werden dabei nicht geändert, sprich der handles.figures den ich anfangs erstellt habe bleibt unverändert.
Also habe ich derweilen so "gelöst", indem ich die CloseFcn wie folgt editiert habe
Dieser Ansatz funktioniert denke ich eigentlich nur störend dabei ist, dass guidata immer beim Schließen eines Figures das MainGUI in den Vordergrund holt.
Ich hoffe es ist soweit verständlich welches Problem ich habe, weshalb ich mich freuen würde wenn du mir dabei helfen könntest dieses bestmöglich zu lösen.
Generell stellt sich mir die Frage wie man ein Figure oder plot erstellen kann wo das Figure nicht in den Vordergrund gebracht wird.
Besten Dank.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|