|
|
waitbar, uigetfile etc. auf richtigem Monitor öffnen? |
|
Jette |
Forum-Anfänger
|
|
Beiträge: 32
|
|
|
|
Anmeldedatum: 13.02.09
|
|
|
|
Wohnort: München
|
|
|
|
Version: R2010b, R2015b
|
|
|
|
|
|
Verfasst am: 06.03.2012, 14:05
Titel: waitbar, uigetfile etc. auf richtigem Monitor öffnen?
|
|
Hallo,
ich arbeite inzwischen regelmäßig mit 2 Monitoren und bin öfter mal etwas genervt, wenn sich Dialogfenster ständig auf dem "falschen" Monitor öffnen. Wenn ich meine Haupt-GUI auf dem rechten Monitor habe, möchte ich eigentlich auch alle zugehörigen Dialogfenster auf dem rechten Monitor öffnen.
Bei nicht-modalen Dialogen (z.B. waitbar) kann man ja das Dialogfenster NACH der Erstellung im Code z.B. mit centerfig umpositionieren, dies führt allerdings zu einem leichten Flackern. Dies könnte man vermlich noch umgehen, wenn man das Fenster jedesmal unsichtbar öffnet und erst nach dem Umpositionieren sichtbar macht.
Für modale Dialoge fällt mir aber gar keine Lösung ein.
Gibt es eine Möglichkeit, Standard-Dialogfenster auf einem bestimmten Monitor oder z.B. auch relativ zu einem anderen Fenster zu positionieren?
Gruss
Jette
|
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 07.03.2012, 17:33
Titel: Re: waitbar, uigetfile etc. auf richtigem Monitor öffnen?
|
|
|
|
|
Hallo Jette,
Ja. Man muss nur die korrekten Positionen angeben. Die Positionen der Monitor erhält man mit:
Ein Problem ist dann aber, dass die Anwendung auf ein spezielles Monitor-Setup angepasst ist. Wenn man dann die Monitore vertauscht oder auf einem Laptop arbeitet, wird das Layout wieder zerwürfelt.
Man bräuchte also eine Toolbox-Funktion FigPosition mit z.B. folgenden inputs:
- FigPosition([x,y,w,h]) gibt einfach [x,y,w,h] zurück.
- FigPosition([x,y,w,h], M) gibt die absoluten Position zurück, die zur relativen Position auf dem M.ten Monitor gehört. Dabei wird getestet, ob überhaupt M monitore angeschlossen sind. Ansonsten wird auf den naheliegendsten zurückgegriffen.
- FigPosition([x,y,w,h], FigHandle), benutzt den gleichen Monitor wie FigHandle
- FigPosition([x,y,w,h], 'NameOfTheGUI') speichert die relative Monitor-Position und den Monitor in einem File, z.B. wenn ein GUI geschlossen wird.
- FigPosition('NameOfTheGUI') gibt den zuletzt gespeicherten Wert wieder aus. Damit kann man leicht programmieren, dass ein GUI auf dort wieder geöffnet wird, wo man es zu letzt geschlossen hat.
Das läßt sich leicht mittels Java unabhängig von der Platform programmieren. Es gibt ein paar Ansätze in den FileExchange-Seiten. Aber keiner stellte mich bisher zufrieden. Mein WindowAPI erlaubt nur sichtbare Figures auf unterschiedlichen Monitoren zu platzieren. Für unsichtbare scheitert dies aber.
Ich werde es mal probieren, aber habe die nächsten zwei Wochen noch mit Aufträgen zu tun.
Gruß, Jan
|
|
|
Jette |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 32
|
|
|
|
Anmeldedatum: 13.02.09
|
|
|
|
Wohnort: München
|
|
|
|
Version: R2010b, R2015b
|
|
|
|
|
|
Verfasst am: 08.03.2012, 08:26
Titel:
|
|
Hallo Jan,
danke für Deine Erläuterungen. Dein WindowAPI habe mir neulich schon besorgt und es hilft sicherlich schon mal bei selbstgebauten (modalen) Dialogen.
Meine eigentliche Frage ist aber, wie es mit den modalen Standard-MATLAB-Dialogen aussieht. Hier ist das Problem, dass diese den Programmfluss stoppen bis der Anwender sie bedient hat. Zu dem Zeitpunkt, wo ich u.U. auf ein Figure Handle zugreifen könnte, existiert die Figure schon gar nicht mehr. Dadurch ist ein nachträgliches Umpositionieren nicht möglich. Das würde für meine Vorstellung bedeuten, dass ich hier nur eine Chance habe, wenn ich mir diese Funktionen selber (um)schreibe. Oder übersehe ich da etwas?
Gruß
Jette
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 08.03.2012, 13:57
Titel:
|
|
Hallo Jette,
Das Problem liegt also nicht bei der modal-Eigenschaft, sondern bei der Benutzung der Standard-Dialoge. Diese öffnen sich immer auf dem primären Bildschirm. Wenn sie einigermaßen schlau programmiert wurden, benutzen sie dafür die "get(0, 'DefaultFigurePosition')", so dass man diese manuell auf die Koordinaten des gewünschten Bildschirm setzen könnte.
Man muss dabei aber verhindern, dass ein modaler Dialog auf dem zweiten Monitor erscheint, wenn gar keiner angeschlossen ist.
Gruß, Jan
|
|
|
Jette |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 32
|
|
|
|
Anmeldedatum: 13.02.09
|
|
|
|
Wohnort: München
|
|
|
|
Version: R2010b, R2015b
|
|
|
|
|
|
Verfasst am: 08.03.2012, 14:18
Titel:
|
|
Hallo Jan,
leider interessieren sich zumindest uigetfile und uigetdir nicht für die Einstellung 'DefaultFigurePosition' Die Idee hatte ich heute auch schon mal, diese Einstellung vorübergehend umzubiegen vor dem Aufruf dieser Dialoge.
Gruss
Jette
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 08.03.2012, 17:45
Titel:
|
|
Hallo Jette,
Brr, UIGETFILE ist ein Java-Dialog, dessen Implementierung vom Matlab-Release abhängt. Es ist , zumindest für mich, kaum noch möglich, mal eben den zugrundeliegenden Code zu lokalisieren und zu ändern. Seit Matlab 6.5 ist die Komplexität dieser grundlegenden GUI-Funktionen förmlich explodiert. Ich nehme an, das ist der Grund dafür, dass z.B. UITREE und UITABLE so stiefmütterlich behandelt werden.
Gruß, Jan
PS. Liebe Stiefmütter, das ist nicht persönlich gemeint. Alle mir bekannten Stiefmütter gehen sorgsam(er) mit den ihnen Anvertrauten um.
|
|
|
Jette |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 32
|
|
|
|
Anmeldedatum: 13.02.09
|
|
|
|
Wohnort: München
|
|
|
|
Version: R2010b, R2015b
|
|
|
|
|
|
Verfasst am: 09.03.2012, 10:02
Titel:
|
|
Hallo Jan,
vielen Dank für Deine Bemühungen. Das sieht ja nicht so aus, als wenn es eine "einfache" Lösung für das Problem geben würde. Ich denke, cih hake das für den Moment erst mal ab und kümmere mich um andere inhaltliche Probleme.
Gruss
Jette
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|