Verfasst am: 19.07.2012, 18:57
Titel: Messagebox in den Vordergrund setzen
Hallo,
wen ich meine GUI starte, fange ich in der _OpeningFcn Fehler ab. Ich möchte im Falle von Fehlern Meldungen über Messageboxen ausgeben. Das gelingt auch. Leider bekomme ich es nicht hin, diese Messageboxen in den Vordergrund zu setzen. Die GUI setzt sich stets automatisch in den Vordergrund. Wie kann ich das gewünschte Verhalten bewirken?
Wenn aber jetzt deine figure auch modal (windowstyle) ist solltest du die figure erst visible on setzten und dann deine msgbox aufrufen. Ich denke so sollte es klappen.
@Marco: Hier mein Code. Vielleicht habe ich etwas übersehen.
Code:
% --- Executes just before Approximation is made visible. function Approximation_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to Approximation (see VARARGIN)
% Choose default command line output for Approximation
handles.output = hObject;
% UIWAIT makes Approximation wait for user response (see UIRESUME) % uiwait(handles.Approximation);
%Defaults für Checkboxen und Radiobuttons setzen
set(handles.radiobuttonnorm,'Value',1);
set(handles.checkboxboxplot,'Value',1);
set(handles.checkboxoverwrite,'Value',0);
try
%Vollständige Datenbank in den Speicher laden
hw = waitbar(0,'Vollständiges Abbild der Testdaten im Speicher...');
steps = length(sheets);
forstep = 1:steps
% computations take place here
CompleteData{step}=xlsread('Datenbank.xls',sheets{step});
waitbar(step / steps) end close(hw)
%Daten in der GUI verfügbar machen
setappdata(handles.Approximation,'CompleteData',CompleteData);
catch errload
close(hw)
hm = msgbox('Die Datenbank ist zwar vorhanden, konnte jedoch nicht geladen werden. Es liegt wahrscheinlich eine Formatierungsfehler vor oder die Datei ist noch geöffnet.','Ladefehler','error','modal');
set(hm,'Visible','on');
end
catch errcheck
hm = msgbox('Die Datei "Datenbank.xls" ist nicht vorhanden. Datei ins Verzeichnis kopieren und neu starten.','Datei nicht vorhanden','error', 'modal');
set(hm,'Visible','on');
end
ja so wie du es gemacht hattest meinte ich das nicht. Du musst bevor du die msgbox erstellst deine GUI visible on schalten. Also so:
Code:
set(hObject,'visible','on') catch errload
close(hw) msgbox('Die Datenbank ist zwar vorhanden, konnte jedoch nicht geladen werden. Es liegt wahrscheinlich eine Formatierungsfehler vor oder die Datei ist noch geöffnet.','Ladefehler','error','modal');
end
catch errcheck
msgbox('Die Datei "Datenbank.xls" ist nicht vorhanden. Datei ins Verzeichnis kopieren und neu starten.','Datei nicht vorhanden','error', 'modal');
end
Im übrigen verstehe ich auch jetzt den Befehl. In den Kommentaren steht ja "% --- Executes just before Approximation is made visible. " Dann ist klar, dass man die Sichtbarkeit erstmal auf true setzen muss!
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.