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

Abfrage ob ein fester offen ist und wenn ja schließen

 

Tim98765

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2010, 09:10     Titel: Abfrage ob ein fester offen ist und wenn ja schließen
  Antworten mit Zitat      
Hallo zusammen,


ich habe folgendes Problem.

Ich möchte ein FIGURE mehrmals öffnen allerdings soll es immer im gleichen Fenster geöffnet werden und nicht X-mal neu erscheinen.



Kann mir da jemand weiterhelfen?

Grüße

Timo

Code:
function test

global zur;

figure('Units', 'Pixels', ...
                'Position', [100 150 200 110], ...
                'Menubar', 'none', ...
                'Color', [1 1 1],...
                'name','test','numbertitle','off');
           
if zur==1
   
   
uicontrol('string','zur 1','units','normalized',...
    'position',[0.1 0.1 0.7 0.2],'callback','close(gcbf)',...
    'Fontsize',6);

elseif zur==2
   
uicontrol('string','zur 2','units','normalized',...
    'position',[0.1 0.1 0.7 0.2],'callback','close(gcbf)',...
    'Fontsize',6);

   
end


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.01.2010, 09:36     Titel:
  Antworten mit Zitat      
Hallo,

eine Möglichkeit wäre:
Code:
f = findobj(0, 'type', 'figure', 'name', 'test');


Wenn die Figure nicht existiert, ist f leer (Abfrage mit isempty). Falls es existiert, ist f ein Handle auf diese figure, und das Fenster kann mit figure(f) aktiv gesetzt werden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Tim98765

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2010, 10:51     Titel: Aktuelles fenster wieder öffnen
  Antworten mit Zitat      
noch eine Frage,

wie erreiche ich denn, dass ich das gleiche (aktuelle) Fenster wieder öffne wenn ich zum Beispiel mit einem Pushbutton ein Festern auf mache.

Ich möchte vermeiden dass ich bei jedem klick ein neues Fenster bekomme!


Timo
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.01.2010, 17:53     Titel:
  Antworten mit Zitat      
Hast du's denn schon mit genau dem Code oben probiert?
Private Nachricht senden Benutzer-Profile anzeigen
 
Robert
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 14.11.08
Wohnort: Istanbul
Version: 2010b
     Beitrag Verfasst am: 13.07.2010, 17:06     Titel:
  Antworten mit Zitat      
Hallo Harald,

eine kleine Rückfrage, die ich der Matlab-Hilfe nicht entnehmen kann:
Wozu die 0 (null) an erster Stelle in der Klammer?

Beste Grüße
Robert
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.07.2010, 20:33     Titel:
  Antworten mit Zitat      
Hallo,

0 ist das Handle auf root - die MATLAB-Sitzung, in der man gerade ist. Sozusagen die höchste Ebene.

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: 14.07.2010, 22:00     Titel:
  Antworten mit Zitat      
Hallo Harald,

Code:
f = findobj(0, 'type', 'figure', 'name', 'test');

Normalerweise sind solche GUI-Abfragen nicht zeitkritisch, weil jede Benutzer-Interaktion sowieso langsamer ist. Dennoch könnte es in manchen Fällen hilfreich sein, die Suche mit FINDOBJ einzuschränken und Rechenzeit (== Energie) zu sparen:
Code:
f = findobj(allchild(0), 'flat', 'type', 'figure', 'name', 'test');

Hier sorgt 'flat' dafür, dass nur die Figure-Objekte getestet werden, andernfalls werden alle erreichbaren Handle-Graphics-Objekte überprüft. Je nach Anzahl der offenen Fenster und eingezeichneten Objekte kann FINDOBJ mit 'flat' 10 bis 100 mal schneller sein.
Um genau zu sein, sind eigentlich alle ALLCHILD(0) Objekte vom Type 'Figure', so dass man dies nicht nochmal testen müsste. Das hat aber auf die Geschwindigkeit aber keinen nennenswerten Einfluss.

Trotzdem, wie reden hier von Millisekunden. Also wenn man es nicht 1000 mal macht, wird man es schwerlich bemerken können. Wenn man es 1e6 mal macht, hat man jedoch schon eine Kaffeepause gespart...

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 - 2025 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.