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

Beim Aufrufen einer Funktion auslassen von hobject

 

mailforu

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2010, 08:45     Titel: Beim Aufrufen einer Funktion auslassen von hobject
  Antworten mit Zitat      
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)
 
guidata(hObject,handles);
 
% --- 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.
if ispc && 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')
 
 
end
 
guidata(hObject, handles);
 
% --- 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.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
 
k= handles
k= str2double(k)
c='J1'
if k >1
for a=2:k
b= strcat('J', num2str(a))
c= strcat(c,'|',b)
 
end
 
else
c='Fill in Number of inertia';
end
set(hObject, 'String',c)

 


Vielen lieben Dank fuer eure Hilfe

mailforu


Marco H.
Forum-Guru

Forum-Guru


Beiträge: 404
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2012b
     Beitrag Verfasst am: 30.11.2010, 12:29     Titel:
  Antworten mit Zitat      
Hallo mailforu,

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

Code:

motorques_CreateFcn(hObject,eventdata,nrinertia)
 


ist das hObject in deinem callback motorques_CreateFcn nicht das popupmenu sondern das editfeld...

so wäre es machbar
Code:

function nrJ_Callback( hObject,eventdata, handles)
nrinertia = get(handles.nrJ, 'string');
motorques_CreateFcn(handles.motorques,eventdata,nrinertia)
 


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
Code:

guidata(handles.figure1,handles)
 


Ich hoffe, dass das dein Problem löst...

MfG Marco
Private Nachricht senden Benutzer-Profile anzeigen
 
mailforu

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2010, 02:03     Titel:
  Antworten mit Zitat      
Hallo Marco,

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