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

set-Befehl in opening Funktion

 

JohnnyChoclate
Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 18.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2014, 17:46     Titel: set-Befehl in opening Funktion
  Antworten mit Zitat      
Hallo Zusammen,

ich bin gerade am Verzweifeln bei einer trivialen Frage, die ich leider nach viel rechereche immer noch nicht lösen konnte. Rolling Eyes

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;


set(handles.Bauteil,'String',{'Platte','Stab'});
set(handles.Belastung,'String',{'longitudinal','Belastung mittig','Belastung Kante'});
set(handles.Emodul,'String', '11000000');
set(handles.Dichte,'String','550');
set(handles.Breite, 'String','0');
set(handles.Dicke,'String','19');
set(handles.Poissonzahl,'String','0.3');
set(handles.Impedanz_Admittanz, 'String', 'Impedanz');



% Update handles structure
guidata(hObject, handles);

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! Sad Sollte der String im Property Inspektor eigentlich immer freigelassen werden, wenn man ihn mit set überschreibt?

Schöne Grüße
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 28.07.2014, 18:45     Titel:
  Antworten mit Zitat      
Hallo
Zitat:
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
JohnnyChoclate
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 18.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.07.2014, 13:15     Titel:
  Antworten mit Zitat      
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.

Code:

set(handles.Impedanz_Admittanz, 'String',{'Admittanz', 'Impedanz'});
set(handles.Skalierung,'String',{'Oktaven','unskaliert'})
set(handles.min_frequenz,'String','0')
set(handles.max_frequenz,'String','5000')
set(handles.Schrittweite,'String','1')
 

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)

handles.Impedanz_Admittanz = get(hObject, 'String');
guidata(hObject, handles);

Leider löst der Callback nur aus wenn wirklich etwas gedrückt wird. Deshalb war meine Idee die Werte in der Openingfunktion zu belegen.
Code:
handles.Impedanz_Admittanz = 'Admittanz';

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?! Question
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.
Code:
   elseif strcmp(Bauteil, 'Stab') && strcmp(Belastung, 'Belastung mittig') %Für Stäbe mittige Belastung
       
    Realteil = 2 * (Dichte * Dicke * Breite)^0.75 * (2*pi* Frequenzbereich).^0.5 * (Breite * (Dicke)^3 * Emodul /12 )^(0.25);
    Imaginaerteil =  2 * (Dichte * Dicke * Breite)^0.75 * (2*pi* Frequenzbereich).^0.5 * (Breite * (Dicke)^3 * Emodul /12 )^(0.25);
    Betrag_plot = abs(Realteil) * 2^(0.5);
   

Die Fehler Meldung lautet: Undefined function or variable

Eine Vermutung von mir wäre das es bei nachträglichen Änderungen zu Problemen kommt. Der erste Durchlauf funktioniert einwandfrei...
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 31.07.2014, 10:42     Titel:
  Antworten mit Zitat      
Hallo

das ist eine falsche Vorgehensweise.
hast du dir die Doku zu Popup angeschaut?
http://www.mathworks.de/de/help/mat.....allbacks.html#f10-1001517

Zitat:

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)
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')

% aktueller Menupunkt
Menupunkt = Liste{selection}
 
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.