Beim Aufrufen einer Funktion auslassen von hobject
mailforu
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 30.11.2010, 08:45
Titel: Beim Aufrufen einer Funktion auslassen von hobject
Hallo,
ich wuerde mich freuen, wenn ihr mir bei folgendem Problem helfen koenntet.
Ich moechte in der Callback funktion eine Createfkt aufrufen, um so die handles Variable zu uebermitteln. Die Callbackfkt genannt nrinertia ist eine Editfkt. in diese sollen Zahlen eingegeben werden. Die Createfkt. genannt motorques soll ein popupmenue werden in der J1...bis Jn als Auswahl steht. n ist diejenige Zahl die im Edit eingegben wird.
Es klappt auch alles, bis auf das Problem das beim Aufruf der Funktion die hobject von der Callbackfkt nrinertia uebergeben wird und deswegen beim set-Befehl die c-Variable nicht in das Popupmenue geschrieben wird sondern in das Edit fenster. Deswegen hier die Frage, wie kann ich hObject nicht uebergeben? Ich habe gelesen ab 2009 geht es mit ~ aber mir steht leider nur Matlab 2008 zur Verfuegung
zur naehren Verdeutlichung hier mein Quellcode:
Code:
function nrJ_Callback( hObject,eventdata, handles) % hObject handle to nrJ (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of nrJ as text % str2double(get(hObject,'String')) returns contents of nrJ as a double
nrinertia = get(handles.nrJ, 'string');
motorques_CreateFcn(hObject,eventdata,nrinertia)
% --- Executes during object creation, after setting all properties. function nrJ_CreateFcn( eventdata, handles,hObject) % hObject handle to nrJ (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. ifispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');
end
function motorques_Callback( hObject,eventdata, handles) % hObject handle to motorques (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Hints: contents = get(hObject,'String') returns motorques contents as cell array % contents{get(hObject,'Value')} returns selected item from motorques
val = get(handles.motorques, 'Value');
% Liste der Einträge im Pop-up-Menü
str = get(handles.motorques, 'String');
% Text zur ausgewählten Nummer des Eintrags switch(str{val}) case 'J1'
set(handles.text26 ,'string', 'damping') case 'resonanz frequency'
set(handles.text26,'string', 'resonanz')
% --- Executes during object creation, after setting all properties. function motorques_CreateFcn( hObject,eventdata, handles) % hObject handle to motorques (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. ifispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');
end
zunächst mal ist in jedem callback das hObject, dasjenige was gerade betätigt wird. Im Falle eines Editfeldes entsprechend das Editfeld. Übergibst du nun in deinem Editfeld_callback folgendes
wobei du doch die motorques_CreateFcn hierfür garnicht brauchst. Schreib das was du mit dem Popupmenu machen willst in den nrJ_Callback. Dein Popupmenu handle ist handles.motorques welches du mit set und get bearbeiten kannst...
Die handles speichere ich auch immer in der figure, also mit
vielen lieben Dank fuer deine Hilfe. Jetzt funktioniert es auch. Ich hatte eine aehnliche Variante schon davor versucht, aber hatte wohl irgendwo einen Fehler den ich dann falsch interpretiert hatte.
Nochmal danke!
mailforu
Einstellungen und Berechtigungen
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.