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, dynamisches Popup-Menu mit Push Button

 

smarti
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 19.01.13
Wohnort: ---
Version: 12b
     Beitrag Verfasst am: 24.01.2013, 17:28     Titel: GUI, dynamisches Popup-Menu mit Push Button
  Antworten mit Zitat      
Hallo Community,

ich schreibe gerade an einem GUI. Dafür habe ich mir überlegt, dass der ausgewählte String des popmenu1 via eines Push Buttons bestätigt wird und dann den Inhalt, ebenfalls Strings, des popupmenu2 beeinflusst.
Da es nicht zwingend nötig ist, die Strings für die Auswahl anzugeben, habe ich das Verfahren anhand der Values des popupmenu1 versucht:

Code:
function pushbutton1_Callback(hObject, eventdata, handles)

val = get(hObject,popupmenu1,'Value');

switch val
    case 1 % Auswahl A
        set(handles.popupmenu2,'String',{'Blau','Grün','Gelb'})        
    case 2 % Auswahl B
        set(handles.popupmenu2,'String',{'Rot','Violett','Magenta'})
end

funktioniert aber so nicht.

Des Weiteren stellt sich die Frage, ob sich zur weiteren Berechnung dieses Verfahren überhaupt eignet, da ich verschiedene Strings und Berechnungsverfahren für den gleichen Value im popupmenu2 hinterlegt sind.

Vielen Dank für die Hilfe und Grüße
smarti
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 24.01.2013, 18:19     Titel: Re: GUI, dynamisches Popup-Menu mit Push Button
  Antworten mit Zitat      
Hallo smarti,

Immer, wenn man im Forum "funktioniert nicht" schreibt, ist eine genauere Erklärung erforderlich: bekommst du eine Fehlermeldung, wenn ja, welche? Stimmtz das Ergebnis nicht mit Deinen Wünschen überein, wenn ja, wie?

Code:
val = get(hObject,popupmenu1,'Value');

Die Variable "popupmenu1" ist hier weder definiert noch an der richtigen Stelle. Lasse sie einfach weg.

Zitat:
Des Weiteren stellt sich die Frage, ob sich zur weiteren Berechnung dieses Verfahren überhaupt eignet, da ich verschiedene Strings und Berechnungsverfahren für den gleichen Value im popupmenu2 hinterlegt sind.

Das verstehe ich nicht. Welches Verfahren meinst Du genau? Du musst beim Auslesen des popupmenu2 dann schon berücksichtigen, welche Strings darin stehen, aber das ist ja einfach möglich.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
smarti
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 19.01.13
Wohnort: ---
Version: 12b
     Beitrag Verfasst am: 24.01.2013, 22:14     Titel:
  Antworten mit Zitat      
Danke für deine Antwort.
Ich gebe zu "funktioniert nicht" war wenig aussagekräftig und ist hier wie auch sonstwo unerwünscht. Schließlich habe ich den Forum Knigge gelesen, bevor ich mein Thema gestartet habe. Wird nicht wieder vorkommen. Wink

Den popupmenu1-Befehl habe ich weggelassen. Diese Fehlermeldung tritt nun auch nicht mehr auf. Zum Verständnis; woher weiß MATLAB, dann aber, dass das Programm auf die Values des popupmenu1 zurückgreifen muss? Der Verweiß zum popupmenu1 wird im pushbutton-callback nicht mehr weiter erwähnt!

MATLAB gibt mir nun folgenden Fehler zurück:

Code:
Attempt to reference field of non-structure array.

Error in Farben>pushbutton1_Callback (line 84)
        set(handles.popupmenu2,'String',{'Blau','Grau'})

Error in gui_mainfcn (line 96)
        feval(varargin{:});

Error in Farben (line 42)
    gui_mainfcn(gui_State, varargin{:});

Error in
@(hObject,eventdata)Farben('pushbutton1_Callback',hObject,eventdata,guidata(hObject))

 
Error while evaluating uicontrol Callback


Die zweite Frage stell ich mal zurück, sonst wird das hier zu verwirrend.

Danke für die Hilfe

smarti
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 25.01.2013, 09:02     Titel:
  Antworten mit Zitat      
Hallo smarti,

Zitat:
woher weiß MATLAB, dann aber, dass das Programm auf die Values des popupmenu1 zurückgreifen muss?

In der Zeile:
Code:
val = get(hObject, 'Value');

ist "hObject" der Handle das aufrufenden Objektes, also des Popupmenüs, das man gerade betätigt hat.

Zitat:
Code:
Attempt to reference field of non-structure array.
Error in Farben>pushbutton1_Callback (line 84)
        set(handles.popupmenu2,'String',{'Blau','Grau'})

Es scheint, als sei "handles" hier kein Struct. Wieso das so ist, weiß ich nicht. Es kommt oft vor, dass das Struct unvollständig ist, da es eine Kopie des handles Structs zum Zeitpunkt der Erstellung des Callbacks ist. Die neueste Version des handles structs bekommt man so:
Code:
function myCallback(hObject, EventData, handles)
handles = guidata(hObject);
...

Zum Stichwort GUIDATA findet man einiges im Forum.

Zitat:
Die zweite Frage stell ich mal zurück, sonst wird das hier zu verwirrend.

Schön! Diese Strategie ist effizient, da eine Verringerung der lokalen Komplexität in Computerprogrammen genau wie auch im richtigen Leben die Lösung von Aufgaben immer enorm vereinfacht.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
smarti
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 19.01.13
Wohnort: ---
Version: 12b
     Beitrag Verfasst am: 27.01.2013, 15:23     Titel:
  Antworten mit Zitat      
Hallo Jan,

ich habe das Problem gelöst. Ich habe den Pushbutton weggelassen und die Auswahl wird direkt von dem popupmenu1 an das popupmenu2 übergeben.

Viele Grüße und Danke,
smarti
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.