ich arbeite gerade an einer komplexen gui die aus mehreren panels und sub-panels besteht.
je nach subpanel (es können auch mehrere subpanels übereinander liegen) besitzen die callbacks für die gui-elemente eindeutige namen. ich habe mich für die version entschieden (unter der verwendung von GUIDE), dass ein *.m-file und ein *.fig-file existiert. durch die komplexität der gui ist das m-file, in der die
callbacks definiert werden sehr lang geworden, obwohl noch keiner der callbacks eine funktionalität besitz. ich würde daher am liebsten eine ordner-struktur machen, in der die callbacks als m-file je nach zugehörigem subpanel geordnet sind (pro callback ein m-file). wie kann ich das realisieren?
Du kannst z.B. alle Callbacks eines uipanels in einem m-File namens z.B. 'Callback_uipanel12.m' sammeln (Zusatz entsprechend tag-Bezeichnung des uipanels, muß aber nicht sein). In diesem Callback steht exemplarisch Folgendes:
Code:
function Callback_uipanel12(tag,hObject,eventdata,handles)
switch tag
%% -------------------------------------------------------------- case 'edFileName'
% Hier steht der auszuführende Code
%% -------------------------------------------------------------- case 'edPathName'
% Hier steht der auszuführende Code end
Dabei wird der String 'edFileName' als tag an die Callback-Routine übergeben und über den switch als entsprechender case erkannt. Dann wird der entsprechende Code ausgeführt.
Ein großer Vorteil dieses Ansatzes ist, daß man alle Callback-Routinen in einem separaten m-File übersichtlich sammeln kann. Man muß natürlich dafür sorgen, daß dieses m-File in einem Ordner liegt, der zur Laufzeit vom Programm gefunden wird! (Der Autor spricht hier aus eigener leidvoller Erfahrung )
danke für die schnelle antwort. diese lösung sieht nicht schlecht aus und ich werde sie wahrscheinlich verwenden. ich dachte nur, es wäre eventuell möglich
für jeden callback eine eigene m-file zu erstellen und diese per @funchandle der gui zu übergeben, so dass in der m-file der gui nicht 100 callbacks stehen.
man muß ja nicht jedem GUI-Objekt eine separate Callback zuordnen! Man kann z.B. alle edit-Fenster, die die gleiche Funktionalität in ihrer Callback-Funktion haben, zusammenfassend immer denselben Callback-case aufrufen lassen. Da sich normalerweise in einer GUI viele Callback-Funktionalitäten wiederholen, kann das Callback-m-File relativ kompakt bleiben.
Die Tags der uicontrols können ja trotzdem unterschiedlich sein!
mich plagt ein kleines Problem...
Ich bin grad dabei meine gesamten Callbacks auszulagern um von verschiedenen GUIs auf dieselben Callbacks zugreifen zu können.
Hier steht ja auch schon schön, wie man es prinzipiell anstellt, allerdings bekomme ich bei mir den Aufruf mit der zusätzlichen Parameterübergabe nicht hin
Hier ein Beispiel, wie ich auf die Callbacks zugreife:
Es ist mir möglich für jedes Element eine einzelne Callback auszulagern, allerdings bekomme ich es nicht hin, für (bspw.) mehrere checkboxes eine Callback zu schreiben, die dann in Abhängigkeit der Tags die Variablen belegt!?
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.