Verfasst am: 30.07.2009, 09:49
Titel: Gui: Opening Function wird mehrmals durchlaufen
Hallo Zusammen,
ich hab ein Gui erstellt, welches den Anwender beim plotten von Daten unterstützen soll.
Die Struktur besteht aus 2 Guis wovon man im ersten anwählen kann wieviele Plots man erstellen will und im Sub-GUI (welches sich öffnet wenn man auf einen Settings-Button klickt) können sachen wie Linienstärke, Farbe, Legende und die eigentlichen Daten aus den Workspace, die übereinander geplottet werden sollen, spezifiziert werden. Also eigentlich ne simples Programm.
Mein Problem liegt darin, dass ich, wenn ich einmal Daten geplottet habe und merke, dass ich zum Beispiel das Grid vergessen habe, wieder zurückgehen möchte und nicht alle Daten noch einmal neu eingeben will. Meine Daten sind in einer Strukturvariable gespeichert. Wenn ich dann erneut auf den Settings-BUtton klicke sollen die in der Struktur gespeicherten Daten eingelesen und automatisch die entrsprechenden Edit-Boxen und Checkboxen gesetzt werden.
Das eigentliche Problem tritt nun auf wenn ich die Daten dann erneut speichere. Da hab ich ausgemacht, dass beim klicken auf den "Übernehmen-Button" aus irgendwelchen Gründen die Opening-Function durchlaufen wird, obwohl ich das Sub-Gui in dieser Aktion eigentlich nur schließe. Und in der Opening-Function ruft er ja wieder die alten Daten auf. Das behakt sich irgendwie. Wieso geht er da ein zweites Mal in die Opening-Function bzw. wie kann ich es einfach realisieren, dass ich alte daten einlesen kann, die zuivor gesetzt wurden?
Weiß da jemand Rat? Bin auch natürlich auch für Alternativ-Vorschläge offen, wie man alte Daten einlesen kann.
Danke im Voraus
Gruß
Poste doch bitte mal Deinen Übenrehmen_Button_Callback.
Außerdem würde ich gerne wissen welche OpeningFcn 2x kommt, und stelle diese bitte auch herein.
_________________
lg
Martin
Tex
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 30.07.2009, 11:56
Titel:
Hi Dagnabit
danke erstmal das du dich dessen annimmst.
Code:
%
% --- Executes just before Plothelper_Sub is made visible. function Plothelper_Sub_OpeningFcn(hObject, eventdata, handles, varargin)
movegui(gcf,'north');
%Up und down buttons mit Pfeilen belegen
set(handles.pushbutton_legend_up,'cdata',upbutton);
set(handles.pushbutton_legend_down,'cdata',downbutton);
set(handles.pushbutton_y_up,'cdata',upbutton);
set(handles.pushbutton_y_down,'cdata',downbutton);
set(handles.pushbutton_x_up,'cdata',upbutton);
set(handles.pushbutton_x_down,'cdata',downbutton);
% Choose default command line output for Plothelper_Sub
handles.output = hObject;
global Fig; %Strukturvariable in die alle Daten geschrieben werden.
evalin('base',['global Fig;']);
if button_state1 == 1% Get Tag of selected object
handles.id = 1; % Identifizierungsvariable für die Subfunctions welcher Button gedrückt wurde
Fig.fig1 = [];
list_entries = get(handles.listbox_y,'String');
index_selected = get(handles.listbox_y,'Value');
number_y = length(list_entries);
ifnumel(list_entries)==0 errordlg('No y-variable selected','Input Error','modal');
return else for i=1:number_y
transfer_command = ['Fig.fig1.y_variable.y',num2str(i),' = list_entries(index_selected(',num2str(i),'));'];
eval(transfer_command);
end clear i transfer_command;
end clear list_entries index_selected;
k = numel(list_entries);
if k==1
Fig.fig1.x_variable.x1 = list_entries(index_selected(1));
end ifnumel(list_entries)==0 errordlg('No x-variable selected','Input Error','modal');
return end if k > 1 if k~=number_y
errordlg('Number of elements for variable x does not match number of elements for variable y','Input error','modal');
return end else
Fig.fig1 = [];
for i=1:k
transfer_command = ['Fig.fig1.x_variable.x',num2str(i),' = list_entries(index_selected(',num2str(i),'));'];
eval(transfer_command);
clear transfer_command;
end clear i;
end clear k list_entries index_selected number_y;
Hallo Dagnabit,
vielen Dank für deine Mühen, aber leider führt das auch nicht zum Erfolg.
Wie kann man denn allgemein alte Daten einlesen. Es gibt doch zuhauf Programme wo man mit einem "Optionen"-Button bestimmte Einstellungen setzen kann.
In diesem konkreten Fall soll es ja so sein:
Ich setze meine Einstellungen bzgl. Linienbreite, Farbe, Legende, Titel, Achsenbeschriftung etc......
Und wenn ich dann beim Plotten sehe, dass ich das Grid vergessen habe oder die Linienbreite zu groß ist, will ich zurückgehen und ja nicht alle Einstellungen in meinem Sub-Gui neu setzen müssen, sondern ich möchte auf Optionen klicken und möchte meine zuletzt gewählten Einstellungen angezheigt haben.
Das muss doch irgendwie gehen.
Nur ich hab halt alle Einstellungen in meine Strukturvariable mit rein geschrieben (in der ich auch die zu plottenden Werte habe) und wollte die in der Opnening_Fcn des Sub-Guis auslesen.
Nur da er beim Übernehmen der Einstellungen (Drücken des Apply-Buttons) nocheinmal die Opening_Fcn durchläuft, gerät da was durcheinander.
Ich bin auch für jede Alternativmethode dankbar........
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.