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

Mehrere Instanzen einer GUI mit unterschiedl. Tabelleninhalt

 

Stoph

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2009, 14:13     Titel: Mehrere Instanzen einer GUI mit unterschiedl. Tabelleninhalt
  Antworten mit Zitat      
Hallo ihr alle!
Ich habe gerade folgendes Problem. Ich habe eine GUI entworfen, die eine Tablle enthält. Diese Tabelle hat zwei Spalten, einmal Zeitwerte und einmal Messwerte. Wenn ich die selbe GUI ein weiteres mal aufrufe, allerdings mit anderen Messwerten, dann wird der Tabelleninhalt der zuerst aufgerufenen GUI überschrieben und ich habe zwar zwei geöffnete GUI-Fenster, aber beide zeigen mir die gleichen Messwerte... Ich würde gerne wissen, wie man die Sache so lösen könnte, dass das GUI-Fenster, das zuerst aufgerufen wurde, seinen Tabelleninhalt ganz normal behält und die neuen Messdaten nur in der zweiten Instanz der GUI erscheinen?
Vielen Dank für eure Hilfe!
Grüße, Stoph


Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 11.07.2009, 10:08     Titel:
  Antworten mit Zitat      
Hallo,

seltsam. Wenn das GUI zweimal geöffnet wurde, sollten sie auch unabhängig sein. Daher ein paar Fragen:
- wie hast Du das GUI entworfen (GUIDE oder "zu Fuß")?
- wie setzt Du die Werte in die Tabelle, welche Befehle benutzt Du zum "Ansteuern" der Tabelle im GUI?

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Stoph

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2009, 09:49     Titel:
  Antworten mit Zitat      
Hi!
Also ich habe meine GUI mit "guide" entworfen. Meine Daten lese ich aus einer *.mat-Datei, da diese in einer anderen GUI anfallen und ich nur so auf meine Messwerte, etc. zugreifen kann.
Meine Tabelle lade ich in der CreateFcn der Tabelle folgendermaßen:
Code:
set(findobj('Tag','tabelle'),'ColumnFormat',{'long g','long g'},'Data',[handles.zeitwerte' handles.messwerte']);
 

Ich hänge auch mal die bisherige Version meines Quellcodes an...
Vielen Dank für die Hilfe schon einmal vorab,
Gruß, Stoph

SubGUItabAus.fig
 Beschreibung:

Download
 Dateiname:  SubGUItabAus.fig
 Dateigröße:  6.38 KB
 Heruntergeladen:  468 mal
SubGUItabAus.m
 Beschreibung:

Download
 Dateiname:  SubGUItabAus.m
 Dateigröße:  8.5 KB
 Heruntergeladen:  640 mal
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 13.07.2009, 11:01     Titel:
  Antworten mit Zitat      
Kannst du auch einmal eine Beispiel mat-Datei zur Verfügung stellen, damit das Programm auch ausgeführt werden kann?

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 13.07.2009, 12:59     Titel:
  Antworten mit Zitat      
Hallo,

das Problem liegt im findobj: der findet alle Tabellen. Du musst die Suche auf das aktuelle GUI einschränken, also
Code:
findobj(handles.figure1, 'Tag', 'tabelle')

sucht nur im aktuellen GUI ...

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Stoph

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2009, 13:29     Titel:
  Antworten mit Zitat      
Hm, ich habe deinen Vorschlag ausprobiert, erhalte dann aber folgende Fehlermeldung:
Code:
??? Reference to non-existent field 'figure1'.

Error in ==> SubGUItabAus>infofeld_CreateFcn at 174
set(findobj(handles.figure1,'Tag','infofeld'),'String',sprintf('Parameter %s  (%s)\n%s\n%s\nDarstellungsrate: %d [1/s]',...

Error in ==> gui_mainfcn at 96
        feval(varargin{:});

Error in ==> SubGUItabAus at 48
    gui_mainfcn(gui_State, varargin{:});

Error in ==> @(hObject,eventdata)SubGUItabAus('infofeld_CreateFcn',hObject,eventdata,guidata(hObject))

 
??? Error using ==> struct2handle
Error while evaluating uicontrol CreateFcn

??? Reference to non-existent field 'figure1'.

Error in ==> SubGUItabAus>tabelle_CreateFcn at 101
set(findobj(handles.figure1,'Tag','tabelle'),'ColumnFormat',{'long g','long g'},'Data',[handles.zeitwerte'
handles.messwerte']);

Error in ==> gui_mainfcn at 96
        feval(varargin{:});

Error in ==> SubGUItabAus at 48
    gui_mainfcn(gui_State, varargin{:});

Error in ==> @(hObject,eventdata)SubGUItabAus('tabelle_CreateFcn',hObject,eventdata,guidata(hObject))

 
??? Error using ==> struct2handle
Error while evaluating uitable CreateFcn


Ich habe eine Beispiel info.mat Datei angehängt. Handelt sich dabei allerdings um eine "abgespeckte" Version... Smile
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 13.07.2009, 13:32     Titel:
  Antworten mit Zitat      
Die mat-Datei ist leider nicht mit dabei, evtl. als .m umbenennen und nochmal anhängen. Wir können die ja wieder umbenennen.

Evlt. könnte dir auch das weiterhelfen:
Code:
findobj(gcf, 'Tag', 'tabelle')


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Stoph

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2009, 13:41     Titel:
  Antworten mit Zitat      
Sorry, den doppel-post, aber irgendwie hat das Anhängen der *.mat-Datei nicht geklappt... Das Dateiformat wird nicht erkannt.
Aber man kann sich die info.mat datei ja auch einfach händisch kurz erstellen:

Code:
param_bereich=rand(1,10);
temp_bereich=rand(1,10);
klasse='Restricted';
shortname='Vib';
gekuerzter_Param_name='123456789'
darst_rate=5;
einheit='G';
txt='Rohdaten';
%---
save info.mat param_bereich temp_bereich gekuerzter_Param_name klasse shortname darst_rate txt einheit


Dann die info.mat Datei einfach noch im richtigen Verzeichnis ablegen.
 
Stoph

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2009, 13:48     Titel:
  Antworten mit Zitat      
Hey top!
Das hat weiter geholfen! Jetzt funktioniert es...
statt
Code:
findobj(handles.figure1,'Tag','tabelle')

einfach
Code:
findobj(gcf,'Tag','tabelle')

und schon klappt's!

Vielen Dank euch zwei! Hat mir sehr weitergeholfen!
Ich werde mich jetzt demnächst auch bei diesem Forum offziell anmelden. Wird langsam Zeit ^^

Schöne Grüße,
Stoph[/code]
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 13.07.2009, 13:51     Titel:
  Antworten mit Zitat      
Also, bei mir öffnet Matlab gar kein neues Fenster, sondern holt bei erneuter Ausführung nur das aktuelle wieder in den Vordergrund.

Hast du es mal mit meinem Vorschlag oben probiert?

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Stoph

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2009, 14:53     Titel:
  Antworten mit Zitat      
Wenn er nur das aktuelle Fenster wieder in den Vordergrund holt, liegt das daran, dass in meiner figure unter "GUI Options" noch "Allow only one instance of GUI to run" ausgewählt ist. Wenn man da den Haken raus macht und diese Änderung abspeichert, dann öffnet sich immer wieder ein neues Fenster...
Jop, habe deinen Vorschlag ausprobiert und das hat dann auch so funktioniert, danke!
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 13.07.2009, 16:53     Titel:
  Antworten mit Zitat      
Hallo,

zur Erklärung meines Befehls: handles.figure1 funktioniert dann, wenn man wie ich in GUIDE dem GUI selber keinen anderen Tag verpasst Wink. Genauer gesagt sollte es handles.TagDesFiguresDerImGuideEingestelltWurde heißen.

gcf funktioniert auch, allerdings würde ich dann eher gcbf nehmen (sicherer in dem Sinne, dass zwischen dem Aufruf des Callbacks und dem findobj-Befehl aus irgendwelchen Gründen jemand noch ein neues Fenster aufmacht ...).

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Stoph

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.07.2009, 07:31     Titel:
  Antworten mit Zitat      
Ah ok, danke für den Tipp! Ich werde das noch ändern. In meiner GUI habe ich für die figure keinen Tag vergeben. Der Tag wäre eigentlich "figure1" gewesen, hat aber trotzdem net geklappt... naja... mit "gcf" bzw. jetzt dann "gcbf" funktionierts ja... Smile
 
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 - 2024 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.