Verfasst am: 28.07.2014, 17:46
Titel: set-Befehl in opening Funktion
Hallo Zusammen,
ich bin gerade am Verzweifeln bei einer trivialen Frage, die ich leider nach viel rechereche immer noch nicht lösen konnte.
Ich habe mir ein GUI erstellt und möchte gerne mit dem set-Befehl die Werte in einem Edit-Feld vorbelegen. Leider bekomme ich es einfach nicht auf die Reihe, obwohl ich mir sicher bin das der Zugriff richtig ist. Hier wäre meine Code aus der opening-Funktion.
Code:
% --- Executes just before Impedanzen_manuelle_Eingabe is made visible. function Impedanzen_manuelle_Eingabe_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to Impedanzen_manuelle_Eingabe (see VARARGIN)
% Choose default command line output for Impedanzen_manuelle_Eingabe
handles.output = hObject;
Meine Ideen sind folgende:
Manche Werte könnte ich auch im Property Inspektor der jeweiligen Text-Felder vorbelegen, allerdings geht das leider nicht bei allen Feldern.... ich glaube das Problem sitzt mal wieder vor dem Computer! Sollte der String im Property Inspektor eigentlich immer freigelassen werden, wenn man ihn mit set überschreibt?
Sollte der String im Property Inspektor eigentlich immer freigelassen werden, wenn man ihn mit set überschreibt?
Nein, das spielt keine Rolle. Da mit SET wird der Inhalt der Textbox immer überschrieben.
Was funktioniert denn nicht? Kommt eine Fehlermeldung, falls ja bitte posten?
So auf ersten Blick, kann ich nichts Falsches erkennen, existieren denn überhaupt die Felder? Hast du exakt die Tag-Namen in Property-Inspector vergeben?
Vielen Dank Denny für die Antwort!! Das Problem hat sich "Gott sei Dank" durch herunterfahren und Neustarten gelöst... Ich sollte den PC dringend mal wieder platt machen! Ich hätte noch eine Frage die ich leider auch mit Versuchen nicht 100%-ig beantworten konnte. Ich mache in der Opening_Fct die Vorbelegung bzw. Auswahl der Dropdowns.
Diese frage ich später ab und falls sie verändert wurden, aktualisiere ich sie.
Code:
% --- Executes on selection change in Impedanz_Admittanz. function Impedanz_Admittanz_Callback(hObject, eventdata, handles) % hObject handle to Impedanz_Admittanz (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
Jedoch bekomme ich jetzt in meiner Abfrage eine Fehlermeldung, das der Wert für eine Variable nicht gefunden werden kann. Dabei schließe ich darauf das sie die Abfrage, die in einer if-Schleife vorher funktioniert hat, den Wert des handles.Impedanz_Admittanz nicht aktualisiert bekommt?!
Für mich gerade schwer nachzuvollziehen woran es liegt und durch Versuche bin ich auch nicht darauf gekommen ob es nun den Wert annimmt oder nicht.
Hier noch ein Auszug der if-Schleife in der sie eigentlich alle Werte beziehen sollte.
% --- Executes on selection change in Impedanz_Admittanz. function Impedanz_Admittanz_Callback(hObject, eventdata, handles) % hObject handle to Impedanz_Admittanz (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
handles.Impedanz_Admittanz = get(hObject, 'String');
guidata(hObject, handles);
Das ist falsch, so überschreibst du deine handles( das ist ein Zeiger auf eine GUI- Komponente), deswegen auch die Fehlermeldung. Also in eigene Variable schreiben, wenn du so willst.
handles.mywert =
Zitat:
Leider löst der Callback nur aus wenn wirklich etwas gedrückt wird. Deshalb war meine Idee die Werte in der Openingfunktion zu belegen.
Man braucht keinen Callback, um auf das aktuelle Wert des Popupmenus zuzugreifen, dazu in der Doku schauen. Callback ist dazu da um bei Änderung des Werts etwas anderes in GUI zu aktualisieren oder auszulösen.
Man kann an beliebiger Stelle den Wert des Popupmenus abfragen, das muss man nicht extra speichern:
Code:
% alle Menupunkte holen
Liste = get(handles.Impedanz_Admittanz, 'String') % aktuelle gewähltes auswählen
selection = get(handles.Impedanz_Admittanz, 'Value')
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
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.