WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Befehl ausführen beim Schliessen der GUI

 

hyper

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2016, 11:38     Titel: Befehl ausführen beim Schliessen der GUI
  Antworten mit Zitat      
Wo finde ich die CLoserequestfunktion? Ich möchte wenn ich auf das x der GUI klicke das dann ein Befehl ausgeführt wird.


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 30.11.2016, 17:20     Titel: Re: Befehl ausführen beim Schliessen der GUI
  Antworten mit Zitat      
Hallo hyper,

:-)

Offensichtlich findest Du diese Funktion nirgends, sonst würdest Du ja nicht fragen. Und das ist auch schon die Antwort: Es gibt keine.

Die Standard-Figures haben in der CloseRequestFcn die Funktion closereq stehen, die lediglich ein delete aufruft, um das Fenster zu schließen.
Du kannst stattdessen eine eigene Funktion schreiben und sie in der Figure angeben:
Code:
FigH = figure('CloseRequestFcn', @myCloseRequest)

Code:
function myCloseRequest(FigH, EventData)
disp('Goodbye');
delete(FigH);

Ein guter Tipp ist es, in der Dokumentation zu suchen. Das ist sogar effizienter, als das Forum zu befragen:
Code:
docserach CloseRequestFcn


Gruß, Jan

Zuletzt bearbeitet von Jan S am 02.12.2016, 18:23, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
hyper

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.12.2016, 17:49     Titel:
  Antworten mit Zitat      
Danke, aber wo genau schreibe ich nun das ganze hin? Ich habe ja eine Gui also eine große m Datei mit vielen Unterfunktionen für die einzelnen Buttons usw. Verstehe nicht ganz wie ich deine zwei Zeilen wo reinbringen sollte.
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.12.2016, 17:59     Titel:
  Antworten mit Zitat      
Hallo,

in die OpeningFcn
Code:
set(handles.figure1, 'CloseRequestFcn', @myCloseRequest)

und die Funktion dann wie von Jan beschrieben anfügen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.12.2016, 18:24     Titel:
  Antworten mit Zitat      
Hallo hyper,

Arbeitest Du mit GUIDE oder erstellst Du das GUI als Programm?

Genauso, wie die Unterfunktionen für die Buttons, ist die CloseRequestFcn eine Unterfunktion für die Figure. Mache das also ganz genau wie bei den anderen Callbacks.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
hyper

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.12.2016, 12:05     Titel:
  Antworten mit Zitat      
ich benutze GUIDE.

Habe in die openingfunction die zeile eingefügt:
Code:
function MYapp_OpeningFcn(hObject, eventdata, handles, varargin)

set(handles.figure1, 'CloseRequestFcn', @myCloseRequest)


Dann habe ich eine neue Funktion erstellt:
Code:

function myCloseRequest(FigH, EventData)
´
deleteFolder=getappdata(handles.figure1,'folder); %hier möchte ich das bereitstellenm, um beim schließen mit rmdir den ordner zu löschen.

rmdir(deleteFolder,'s')
delete(FigH);


Nur kommt dann folgender Fehler beim Schließen von der GUI:

Code:
Undefined variable "handles" or class "handles.figure1".
Error in MYapp>myCloseRequest (line 85)
deleteFolder=getappdata(handles.figure1,'folder');
Error while evaluating figure CloseRequestFcn
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.12.2016, 13:57     Titel:
  Antworten mit Zitat      
Hallo hyper,

Die Fehlermeldung klingt klar.

Code:

function myCloseRequest(FigH, EventData)
handles = guidata(FigH);   % <--- Einfügen
deleteFolder=getappdata(handles.figure1,'folder);

% Oder direkt:
deleteFolder=getappdata(FigH, 'folder);

rmdir(deleteFolder,'s')
delete(FigH);

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.