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

Umschalten im GUI zwischen *.fig (und dazugehörigem *.m)

 

Sebbl
Forum-Century

Forum-Century


Beiträge: 131
Anmeldedatum: 09.07.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2009, 11:34     Titel: Umschalten im GUI zwischen *.fig (und dazugehörigem *.m)
  Antworten mit Zitat      
Hi,

wie kann ich die Menü-Fkt in meinem GUI-Fenster nutzen, um zwischen Fenstern, also verschieden *.fig (und den dazugehörigen m-Files), umzuschalten.
Ich denke mir, dass es über die Callback-Funktion funktionieren müsste, hab aber leider nichts über den Code hier im Forum oder in Büchern gefunden.
Die Menüeinträge habe ich bereits angelegt...
Kann mir vielleicht jemand helfen ?

Gruß Sebbl
Private Nachricht senden Benutzer-Profile anzeigen


Dagnabit
Forum-Century

Forum-Century


Beiträge: 244
Anmeldedatum: 23.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2009, 11:59     Titel:
  Antworten mit Zitat      
Servus Sebbl

Verwendest Du "guide"?

Wenn ja, kannst Du im Menü "tools" unter "Menu Editor..." Die Menüs mit Callbacks versehen. Diese werden aber eigentlich standardmäßig erstellt.

Ich gehe also davon aus, dass Du Deine Gui´s "zu Fuß" programmiert hast.
Dazu musst Du nur eine Callbackfunktion erstellen, und diese dem Menü hinzufügen.

z.B.
Code:
function menuitem_Callback(hObject, eventdata, handles)


und in der OpeningFcn
Code:
set(handle.DeinMenu, 'Callback', @menuitem_Callback

_________________

lg
Martin
Private Nachricht senden Benutzer-Profile anzeigen
 
Sebbl
Themenstarter

Forum-Century

Forum-Century


Beiträge: 131
Anmeldedatum: 09.07.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2009, 12:21     Titel:
  Antworten mit Zitat      
Hi Martin,

danke für deine Antwort....
Ich verwende jedoch GUIDE und habe dabei Probleme.
Der Callbackeintrag ist vorhanden, jedoch verwende ich irgendwie nicht den richtigen Syntax um die Ansicht z.Bsp. zu foerderband.fig zu ändern.

Gruß Sebbl
Private Nachricht senden Benutzer-Profile anzeigen
 
Dagnabit
Forum-Century

Forum-Century


Beiträge: 244
Anmeldedatum: 23.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2009, 12:28     Titel:
  Antworten mit Zitat      
Servus Sebbl

Dann poste bitte mal die Callback-Funktion.

Und gleich ein paar Fragen dazu:
1. Du startest Dein Hauptfenster (HauptGUI) und mit dem Start werden alle anderen notwendigen Fenster ebenfalls geöffnet? Mit den Menü´s willst Du dann das jeweilige Fenster in den Vordergrund ziehen?

2. Oder sollen Deine Menüeinträge die zusätzlichen Fenster öffnen?
_________________

lg
Martin
Private Nachricht senden Benutzer-Profile anzeigen
 
Sebbl
Themenstarter

Forum-Century

Forum-Century


Beiträge: 131
Anmeldedatum: 09.07.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2009, 12:44     Titel:
  Antworten mit Zitat      
mh,

das sind gute Fragen....Smile
Mir ist es wichtig, dass ich jederzeit zwischen den Fenstern wechseln kann.
Ich möchte jedoch bei einem geöffneten Fenster die anderen nicht sichtbar haben. Ich weiß von daher nicht genau, ob ich am Anfang trotzdem alle lade und die nichtaktiven sozusagen invisible sind, oder ob es besser ist diese dann zusätzlich zu laden. Da hör ich gern auf jemanden der schon etwas Erfahrung darin hat.
In meinem Callbackaufruf steht bisher nichts was funktionieren könnte... Es waren alles nur Tests, welche ich wieder verworfen habe.

Gruß Sebbl
Private Nachricht senden Benutzer-Profile anzeigen
 
Dagnabit
Forum-Century

Forum-Century


Beiträge: 244
Anmeldedatum: 23.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2009, 13:06     Titel:
  Antworten mit Zitat      
Servus Sebbl

Also folgender Ansatz ist nur praktikabel, wenn die Anzahl der Fenster nicht zu groß ist.

Beispielhaft mit drei Fenster (und d.h. drei Menuitems)

Code:
function Fenster1_menuitem_Callback(hObject, eventdata, handles)

set(handlezuFenster1, 'Visible', 'on')
set(handlezuFenster2, 'Visible', 'off');
set(handlezuFenster3, 'Visible', 'off');


Code:
function Fenster2_menuitem_Callback(hObject, eventdata, handles)

set(handlezuFenster1, 'Visible', 'off');
set(handlezuFenster2, 'Visible', 'on');
set(handlezuFenster3, 'Visible', 'off');


Code:
function Fenster3_menuitem_Callback(hObject, eventdata, handles)

set(handlezuFenster1, 'Visible', 'off');
set(handlezuFenster2, 'Visible', 'off');
set(handlezuFenster3, 'Visible', 'on');
 


Damit Du Zugriff auf die handles Deiner Fenster hast, solltest Du diese speichern.
Das kannst Du z.B. so lösen
% ---------------

Du öffnest alle Fenster (1 bis 3) in der OutputFcn Deines Hauptfensters und speicherst die handles dazu als "appdata" in das Hauptfenster.

Code:
function varargout = DeinHauptfenster_OutputFcn(hObject, eventdata, handles)
hFenster1 = Fenster1; % Name des .fig- files
hFenster2 = Fenster2; % Name des .fig- files
hFenster3 = Fenster3; % Name des .fig- files
setappdata(hObject, 'hFenster1', hFenster1);
setappdata(hObject, 'hFenster2', hFenster2);
setappdata(hObject, 'hFenster3', hFenster3);


Wenn Du das so löst, musst Du aber Deine menuitem_Callbacks erweitern
Beispielhaft für Fenster1:

Code:
function Fenster1_menuitem_Callback(hObject, eventdata, handles)

set(getappdata(hObject, 'hFenster1'), 'Visible', 'on');
set(getappdata(hObject, 'hFenster2'), 'Visible', 'off');
set(getappdata(hObject, 'hFenster3'), 'Visible', 'off');

_________________

lg
Martin
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 20.07.2009, 13:30     Titel:
  Antworten mit Zitat      
Moin,

eine andere Idee wäre:
Du erstellst dir die Menü-Items und rufst von jedem in jedem Fenster die gleiche Callback auf (die müsste dann extern in separatem m-File gespeichert werden). In dieser machst du das aufrufende Fenster unsichtbar:
Code:
set(gcfb,'Visible','off');

Außerdem identifizierst du (über die Tags o.ä.) das Fenster, welches geöffnet werden soll:
Code:
Tag = get(hObject,'Tag');
set(getappdata(hObject, Tag), 'Visible', 'on');
 


Bin mir nicht 100% sicher, aber das sollte so auch funktionieren... Du brauchst dann nur den Code mit SETAPPDATA von Dagnabit übernehmen.

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
 
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.