WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

GUI Status sichern/vorher geöffnete GUIs wieder öffnen

 

Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 18.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 22.02.2013, 03:19     Titel: GUI Status sichern/vorher geöffnete GUIs wieder öffnen
  Antworten mit Zitat      
Hallo zusammen,

Vorweg: Sorry für den vielen Text Embarassed

Ich beschreibe mal anhand eines vereinfachten Beispiels, was ich vorhabe und im Idealfall liest einer das tatsächlich alles und kann mir dann evtl. Tipps/Kritik geben, ob meine Ansätze ok sind oder ob es bessere Methoden gibt, mein Vorhaben zu realisieren:

Ein Programm besteht aus folgenden GUIs:
1. Main
2. Datenimport
3. Datenzuweisung
4. Datenansicht

Aus Main ruft man Datenimport und Datenansicht auf, Datenzuweisung wird von Datenimport quasi als 2. Schritt des Imports aufgerufen.

Bisher gibt es folgende Einschränkungen:
1. Beim Import werden die Daten (in einem .mat-File) erst gespeichert, wenn man den kompletten Vorgang abgeschlossen hat (durch Klick auf 'Save' in Datenzuweisung).
2. Das Programm kann nur mit einem Projekt arbeiten.

Ziel ist es, das Arbeiten mit mehreren Projekten zu ermöglichen. Bsp: Man importiert gerade Daten, ist in Datenzuweisung, einige Zuweisungen sind getroffen aber man ist noch nicht so weit, dass man das Projekt speichern könnte. Jetzt möchte man sich aber zu einem anderen Projekt die Daten in Datenansicht anschauen und anschließend wieder zum ersten Projekt zurückkehren und an der letzten Stelle fortfahren (also in Datenzuweisung) ohne dass a) man von Hand wieder die einzelnen GUIs (Datenimport & Datenzuweisung) öffnen muss und b) Daten verloren gehen.

Das Umschalten zw. den einzelnen Projekten soll für den Anwender relativ einfach sein. zB. ähnlich wie das aus vielen Anwendungen bekannte "Zuletzt verwendete Dateien" in der Menüleiste:



Meine Lösungsansätze/Überlegungen sind folgende:

Bei Klick auf ein anderes Projekt soll folgendes geschehen (beispielhaft angenommen wir sind in der GUI Datenzuweisung):

Sichern der Daten:
* Speichern der Radiobuttons, Checkboxen, Textboxinhalte usw. -> Lösung: Funktionen zum Speichern der Handles der Elemente anlegen und entsprechend aufrufen (http://blogs.mathworks.com/videos/2010/12/10/how-to-save-and-restore-state-of-a-gui-in-matlab/)
* Speichern der beim GUI-Aufruf übergebenen Daten. Ich denke, dass kann wie im vorigen Punkt lösen, bloß dass man statt der Handles die Daten aus dem Workspace sichert.

Ich habe mir überlegt, dass man pro Projekt 2 mat-Files anlegt. Zum einen das DataFile, welches bisher durch Klick auf 'Save' erstellt wurde. Dies soll nun auch schon erstellt werden können, wenn noch nicht alle Daten vorliegen. Alles was man bereits erfolgreich importiert hat, soll schon gespeichert werden.
Zum anderen ein mat-File (nennen wir es StateFile), dass die Zustände der GUI-Elemente speichert und alle übergebenen Daten, die benötigt werden, um den aktuellen Status der GUI darzustellen und zu eine späteren Zeitpunkt fortzufahren. (Es sollten die an Datenimport und an Datenzuweisung übergebenen Daten gesichert sein. Wenn man bspw. in Datenzuweisung nach Projektaufruf fortfährt, sollte man auch durch Klick auf 'Back' zu Datenimport zurückkehren können.)

Ich denke, das ist mit der Methode aus dem Link machbar (kurz ausgeführt: es werden Funktionen saveState & restoreState angelegt. Bei Klick auf ein anderes Projekt wird saveState für das aktuelle Projekt und restoreState für das angeklickte Projekt aufgerufen. Zudem könnte man saveState zB. auch für einen Button 'Zwischenspeichern, ich mach morgen weiter' verwenden.)

Speichern der geöffneten GUIs:
Meine Idee: Ich erstelle in StateFile für die GUIs Variablen, in denen ich Speicher, ob eine GUI beim letzten Zugriff auf ein Projekt geöffnet war. Wenn ich dann zu einem Projekt wechsle, in dem man in Datenzuweisung war, weiß das Programm durch Abfragen der Variablen, dass Datenimport und Datenzuweisung zu öffnen sind. Diese können die notwendigen Daten dann aus StateFile laden


Ich hoffe, ich habe es einigermaßen verständlich machen können was ich vorhabe und was meine bisherigen Lösungswege wären. Es würde mich wie gesagt freuen, wenn mir jemand Anregungen, Verbesserungsvorschläge oder Alternativen an den Kopf schmeißen würde.

Beste Grüße,
Seban
Private Nachricht senden Benutzer-Profile anzeigen


Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.