erlaubt Dir Eigenschaften von Objekten abzufragen;
näheres siehe Matlabhilfe
pooz_gast
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 04.05.2009, 11:48
Titel:
Hi Martin,
vielen Dank, es funktioniert!
Dagnabit hat Folgendes geschrieben:
handles.file ist kein Objekt sondern eine Variable und hat folglich auch keine "Propertys".
Ich dachte, es wäre ein neuer Eintrag einer Variablen "file" in mein bestehendes Objekt "handles" aus folgendem Grund:
Zum einen referenziere ich mit dem "Punkt"-Symbol auf handles, zum anderen speichere ich mit "guidata(hObject, handles);" meine neue Variable in "handles" hinein.
Aber, ich denke, da hab ich wohl was noch nicht genau verstanden.
Dennoch Dank!
Darin kannst Du speichern was immer Du willst; Matrizen, Skalare, Strings, Objekte,...
Du könntest im gesamten Quelltext "handles" durch "hugo" ersetzen; das Programm sollte trotzdem laufen wie vorher.
handles ist ja auch nur ein Variablenname.
Wenn Du mit guide arbeitest, wird die Variable handles als Speicher für alle handles (welch Überraschung) verwendet. Um in der handles- Struktur keinen Schaden anrichten zu können, vermeide ich jede Änderung in "handles".
Das ist aber Geschmackssache.
Das scheint genau das zu sein was ich suche.
Ich möchte einen Variablenwert mittels eines Sliders verändern.
Allerdings steig ich bei dieser ganzen Handels Sache nicht durch.
Ich hab jetzt:
Code:
% --- Executes on slider movement. function slider1_Callback(hObject, eventdata, handles) % hObject handle to slider1 (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,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine range of slider disp('Slider wird bewegt!!!');
B=get(hObject,'Value');
Nur wie kann ich dieses B nun verwenden?
Also wenn ich B nun einfach nach dem ganzen von Matlab erstellten Code ausgebe sieht man da gar nicht. Ich weiß glaub ich einfach nicht an welcher Position meines COdes nun sozusagen die MAIN ist.
Ebenso hab ich ein Problem damit mir den aktuellen Wert des Sliders in einem Textfeld meiner GUI anzeigen zu lassen. Wird über setappdata funktionieren schätz ich mal. Aber wie genau versteh ich nicht da ich wieder nicht weiß wo ich was ändern muss um das auszugeben.
Also wenn ich B nun einfach nach dem ganzen von Matlab erstellten Code ausgebe sieht man da gar nicht. Ich weiß glaub ich einfach nicht an welcher Position meines COdes nun sozusagen die MAIN ist.
Der von guide erstellte Code ist einfach eine Ansammlung von Funktionen.
So wird z.B. standardmäßig für ein edit-Feld eine sogenannte "edit_CreateFcn" bzw. ein "edit_Callback" erstellt.
Und es heißt z.B. immer !function! edit_Callback(hObject, eventdata, handles)"!!
Es handelt sich also um simple Funktion (wie z.B. die Funktion sqrt oder round,...)
Wenn das GUI gestartet wird, werden alle "CreateFcn" im Code ausgeführt. Callbacks werden dann ausgeführt,wenn Du z.B. etwas drückst (Button) oder ein in anderes Feld klickst(Editfeld).
Es gibt aber noch einige andere definierbare Funktion die aber immer nur ausgeführt werden, wenn die jeweilige Aktion vorangeht (ResizeFcn- wenn Du das Fenster in der Größe änderst; CloseRequestFcn- Bevor das GUI geschlossen wird; OpeningFcn...; OutputFcn...;...)
Für jedes Element (Button, listbox, editfeld,...) in Deiner GUI gibt es ein sogenanntes handle. Das handle ist eine Art Nummer, mit der das jeweilige Element eindeutig identifiziert werden kann.
Guide erstellt automatisch ein structure array mit dem Namen handles. Und in dieser Variablen handles befinden sich nun alle handles zu allen Elementen Deiner GUI.
Das handle zu einem bestimmten Element findest du über dessen 'Tag'.
Wenn Du also das editfeld mit dem 'Tag' 'Name_edit' haben willst, verwendest Du einfach
% --- Executes on slider movement. function slider1_Callback(hObject, eventdata, handles) % hObject handle to slider1 (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,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine range of slider disp('Slider wird bewegt!!!');
B=get(hObject,'Value');
set( handles.Deineditfeld, 'String', num2str(B)); % Hier schreibst Du in Dein Editfeld setappdata(gcf, 'B', B); % Hier speicherst Du B in der GUI
ab, jetzt hab ich noch einen button, der startet ein skript...was ich jetzt nicht auf die reihe bekomm, wie übergeb ich a='hallo' an eine Variable, z.B. X, in dem skript?
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.