Verfasst am: 15.01.2014, 13:12
Titel: Problem mit CreateFcn und "unbekanntem" handle
Hallo zusammen,
ich bin derzeit ohne GUIDE am erstellen einer GUI.
Die meisten Probleme die bisher aufgetreten sind, konnte ich bisher auch lösen, jetzt bin ich aber an einem dran, das ich nicht wirklich verstehe und zwar:
Zusätzlich wird der Inhalt des zweiten Dropdown geändert, wenn in Dropdown 1 eine andere Auswahl erfolgt.
Jetzt zum eigentlichen Problem, wenn nun die "Createfcn" ausgeführt wird, habe ich zwar das handle zu wp.WrTyp.pop1, kann allerdings nicht darauf zugreifen.
Code:
get_dropdown(wp.WrTyp.pop1) Error using handle.handle/get
Invalid or deleted object.
Das eigenartige daran ist, wenn ich den Fehler "überspringe" funktioniert die Callbackfunction einwandfrei, dh. wenn Dropdown1 geändert wird, wechselt auch der Inhalt von Dropdown2 wie gewünscht. Nur eben beim "initialisieren" tritt der Fehler auf.
Weiß hier jemand woran das liegen könnte? "pause" hab ich auch schon mal an diversen stellen eingefügt.
Ich hoffe das ist so verständlich.
Danke fürs lesen und für eventuelle Antworten
Grüße
Chris
Edit war da:
Wenn ich die Funktion als "CreateFcn" rausnehme und einfach nach dem Erstellen des Elements die Funktion ausführe, wird alles wie gewünscht initialisiert... mich würde aber trotzdem noch interessieren, wo mein Denkfehler liegt?
funktioniert-->
also ich verstehe nicht den Sinn, warum du hier beim zweiten Popup CreateFcn nutzt, wo du diesen beim ersten als Callback nutzt.
Na ja CreateFcn wird beim dem Erstellen der GUI aufgerufen. Das heißt es wird immer nur für einen Graphischen Objekt ausgeführt, welcher Callback ausgelöst hat. Man kann nicht auf andere Objekte in dieser Funktion zugreifen, weil diese eventuell noch nicht erzeugt wurden, da sie noch nicht an der Reihe waren.
Deswegen der Fehler bedeutet, dass das handle des anderen Objekts noch nicht existiert.
Du schreibst, dass du GUI ohne GUIDE erstellst, dann brauchst du keine CreateFcn, weil man kann direkt in der UICONTROL das nötige eingeben.
PS
nutze für die Deklaration der Callbacks den Syntax mit FunctionHandle : @mycallback => dann sparst du FEVAL
Zuletzt bearbeitet von denny am 15.01.2014, 15:55, insgesamt 2-mal bearbeitet
ich nutze die CreateFcn, da das Dropdown eigentlich abhängig von existierenden Config-Files initialisiert wird, die in dem Callback "cb_WrTypeSelect" ausgelesen werden. Wird nun in Dropdown 1 ein anderer Typ ausgewählt, muss in einem anderen Ordner nach den Cfgs geschaut werden und diese dann entsprechend im Dropdown aufgelistet werden.
Das ist der Grund weshalb es im einen als Callback und im anderen als CreateFcn drin ist.
Das mit der "Reihenfolge" hatte ich mir auch schon überlegt, aber ich "baue" ja die GUI selbst und das handle zu "wp.WrTyp.pop1" funktioniert auch, wenn ich einen Brakepoint danach setzte. Die CreateFcn wird danach ausgeführt (der Fehler kommt erst danach).
das habe ich auch so gelöst (hatte ich noch in ein edit oben im ersten Post gepackt). Aber danke für die Anregung
Dann nutze ich das "Feature" halt nicht
Grüße
Chris
_________________
--> Kapieren statt Kopieren <---
____________________________________________________
FAQs sind dazu da, FAQs zu beantworten
Richtig fragen!
Ach so, das habe aus deinem Posting so nicht verstanden.
Ich habe oben noch einen Bemerkung geschrieben:
nutze für die Deklaration der Callbacks den Syntax mit FunctionHandle : @mycallback => dann sparst du FEVAL oder wie hast du das bei dir implementiert?
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.