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

GUI - Resize Fcn

 

Martinuk
Forum-Century

Forum-Century


Beiträge: 208
Anmeldedatum: 18.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.03.2013, 19:45     Titel: GUI - Resize Fcn
  Antworten mit Zitat      
Hallo,

ich habe eine GUI mithilfe des GUIDE's erstellt. Unter GUI Options > Resize behavior habe ich Other (Use ResizeFcn) eingestellt.

Ich möchte nämlich, dass wenn der Benutzer im rechten oberen Eck des Figures das Figure maximieren kann. Damit vergrößere ich das Figure auf eine von mir vorgebene Größe (Position). Das funktioniert soweit alles wie es sollte.

Nur wird die ResizeFcn aus welchen Grund auch immer schon in der OpeningFcn aufgerufen, d.h. nach dem Starten öffnet sich das GUI sofort in der maximierten Größe. Dies möchte ich aber nicht haben, erst wenn der Benutzer das Fenster maximiert soll dieses vergrößert werden.

Hat jemand vllt. einen Tipp was hier falsch läuft? Die ResizeFcn ist nirgends in der OpeningFcn zu finden. Beim debuggen ist mir aufgefallen, dass dieser Vorgang aber irgendwo in der OpeningFcn oder gleich danach passiert.

Wie kann ich dies unterbinden?

Wäre cool wenn jemand dazu einen Tipp hätte.
Besten Dank.
Private Nachricht senden Benutzer-Profile anzeigen


Gast100

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2014, 13:35     Titel:
  Antworten mit Zitat      
"ResizeFcn executes whenever you resize the figure and when the figure is created"

Eine Lösung für dein Problem habe ich leider auch nicht.
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 27.03.2014, 13:47     Titel:
  Antworten mit Zitat      
Hallo

Also DRAWNOW kann z.B. verursachen dass Resize-Fcn aufgerufen wird
Hast du so was in der OpeningFcn? Ohne Code ist das daher schwer zu sagen. Kannst du ein lauffähiges Minimalbeispiel erzeugen, wo man dieses Verhalten nachvollziehen kann?
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: 29.03.2014, 23:20     Titel: Re: GUI - Resize Fcn
  Antworten mit Zitat      
Hallo Martinuk,

Beim Öffnen einer Figure wird tatsächlich die ResizeFcn aufgerufen.
Du könntest z.B. versuchen die ResizeFcn beim Erstellen der Figure in GUIDE leer zu lassen und sie erst dynamisch am Ende der OpeningFcn zu setzen.

Auf der anderen Seite ist es nicht direkt logisch, den Maximieren-Knopf für etwas zu verwenden, das nicht Maximieren ist.
Möchtest Du, dass eine bestimmte Maximal-Größe nicht überschritten wird?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
nils77
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 31.03.14
Wohnort: ---
Version: 2013b
     Beitrag Verfasst am: 14.04.2014, 07:54     Titel:
  Antworten mit Zitat      
Hallo,

ich hab auch das Problem, dass die Resizefcn beim ersten öffnen der GUI schon ausgeführt wird. Ich möchte, dass die Resizefcn erst aktiv wird, wenn ich auf den Maximieren-Button klicke.
Ich habe nicht genau verstanden, was du mit
Zitat:
erst dynamisch am Ende der OpeningFcn zu setzen
meinst. Kannst du mir da ein bisschen auf die Sprünge helfen?

EDIT:
Und ich habe jetzt ein neues Problem: Wenn ich die ResizeFcn aktiviere, wird sie bei mir ca. 8 mal direkt hintereinander ausgeführt. Habe es dann nochml mit einem einfachen Code getest und das gleiche Problem gehabt
Code:
z==0
z=z+1
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: 15.04.2014, 00:32     Titel:
  Antworten mit Zitat      
Hallo nils77,

Also "Leerlassen" den ResizeFcn ist klar oder?
Und dann am Ende der OpeningFcn einfügen:
Code:
drawnow;
set(ancestor(hObject, 'figure'), 'ResizeFcn', @yourResizeFcn);

Oder wie Deine Resize-Funktion heißt. Statt den Ancestor zu verwenden, kannst Du den Handle der Figure auch irgendwie anders heraus finden.

Zitat:
Ich möchte, dass die Resizefcn erst aktiv wird, wenn ich auf den Maximieren-Button klicke.

Das ist nicht einfach. Bei allen anderen Resize-Events soll die resizeFcn nicht aufgerufen werden? Und wenn man das Fenster manuell bis auf die Maximal-Größe aufzieht?

Zitat:
Und ich habe jetzt ein neues Problem:

Heißt das, dass das vorherige Problem gelöst ist?

Zitat:
Wenn ich die ResizeFcn aktiviere, wird sie bei mir ca. 8 mal direkt hintereinander ausgeführt.

Die Ursache dafür kann ich nicht raten. Wie aktivierst Du sie denn und was geschieht danach?
Was hat es mit dem "z==0, z=z+1" auf sich?

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.