![]() |
Anzahl Monitore ermitteln (Anwendung verschwindet bzw. nicht
Anzahl Monitore ermitteln (Anwendung verschwindet bzw. nicht Sichtbar)
__________________________________________________ _______________________ Hallo Programmierer… :???: Gleich habe ich zwei Probleme die, wie ich meine, zusammengehören… Es handelt sich um eine ganz einfache Anwendung, die ganz normal unter Windows XP läuft. Manche Benutzer, die diese Anwendung bedienen, benutzen dazu 2 Monitore. Da es verschieden Konstellationen für Benutzung von mehreren Monitoren gibt ist das für meine Anwendung nicht von Interesse. Meine Anwendung SPEICHERT, beim Schlissen, die letzte Position des Formulars auf dem Bildschirm. So weit so gut… Was allerdings sehr ärgerlich ist, ist die Tatsache, dass, wenn ein Benutzer mit zwei Monitoren die Anwendung schlisst und das Programm war zuletzt nur auf dem zweitem Monitor sichtbar, passiert folgendes: Sobald er jetzt NUR mit einem Monitor die Anwendung startet, hat er keine Chance die Anwendung zu sehen… :shock: Leider weiß ich nicht wie ich diesen Fehler beseitigen sollte…, ich meine aber, dass man zwei Sachen dazu braucht: 1.) Die Anzahl der aktuellen aktiven Monitore ermitteln. 2.) Die Anzeige nur auf einem Monitor erzwingen Für Hinweise (vor allem Delphi-Source- Hinweise) wäre ich sehr DANKBAR Paul Jr. |
Re: Anzahl Monitore ermitteln (Anwendung verschwindet bzw. n
Schau dir mal die TScreen-Klasse an. Dort kannst du die Monitore abfragen.
Wenn es das Hauptfenster ist: Windows merkt sich (jedenfalls bis XP) die letzte Position dieses Hauptfensters. |
Re: Anzahl Monitore ermitteln (Anwendung verschwindet bzw. n
1. Ist relativ simpel: Screen.MonitorCount
2. Damit und mit Screen.Monitors[i].WorkAreaRect (Die Arbeitsbereiche der einzelnen Monitore) kannst du überprüfen, ob dein Fenster überhaupt/teilweise/vollständig sichtbar ist. // Zu spät :? |
Re: Anzahl Monitore ermitteln (Anwendung verschwindet bzw. n
Schau dir mal
![]() ![]() Und zu dem Formproblem: ![]() ![]() Ansonsten für die Überschneidungen: ![]() |
Re: Anzahl Monitore ermitteln (Anwendung verschwindet bzw. n
Wenn ein Anwender mit zwei Monitoren eine Anwendung auf den zweiten Monitor verschiebt und dann den zweiten Monitor abschaltet und die Anwendung nicht auf dem primären Monitor sieht, ist er genau genommen selbst schuld. Bei einer korrekt programmierten Anwendung ist die Abhilfe: Rechtsklick auf den Taskbareintrag, Verschieben, und dann das Fenster mit der Tastatur wieder ins Bild ziehen. Das nur mal am Rande, falls du so einer Situation in freier Wildbahn gegenüber stehst, und als Antwort auf die Behauptung, der Benutzer hätte keine Chance, das Fenster zu sehen.
Aber: Löblich, dass du dich um solche Dinge kümmerst. Es ist natürlich immer eine Hilfe für den Benutzer, besonders wenn er unterschiedliche Auflösungen einsetzt, wenn ein Programm selbst dafür sorgt, immer sichtbar zu sein. :thumb: |
Re: Anzahl Monitore ermitteln (Anwendung verschwindet bzw. n
Hallo
Einfacher Vorschlag:
Delphi-Quellcode:
if (MyMainForm.Left>Screen.Width) then
begin MyMainForm.Left := 100; end; |
Re: Anzahl Monitore ermitteln (Anwendung verschwindet bzw. n
Hallo Programmierer :-D
DANKE , DANKE, DANKE !!! für ALLE Antworten! Damit komme ich schon zu Recht. Sieht recht einfach aus… :idea: Viele Grüße und weiter viel Erfolg wünscht Euch Paul Jr. _____________________________________________ Hallo OregonGhost, Natürlich im Prinzip hast Du Recht. Leider habe ich mich etwas zu sparsam ausgedrückt. Der Anwender nimmt z.B. seinen Rechner nach Hause und dort hat er NUR ein Monitor zu Verfügung. Und ganz allgemein: Für mich ist ein Anwender in 99,9% allen Fällen NIE Schuld… Allerdings in dem, durch Dich beschriebenem Fall ist er nicht Schuld sondern Blöd… :wall: Viele Grüße Paul Jr. |
Re: Anzahl Monitore ermitteln (Anwendung verschwindet bzw. n
Hehe, und wenn der Anwender dann wieder zur Arbeit geht und das Programm öffnet, startet es auf dem Primärmonitor. Und der Anwender ärgert sich darüber.
Man könnte für den Fall, dass es keinen zweiten Monitor gibt, die Anwendung verschieben und eine Nachricht anzeigen. Jedoch wird diese Nachricht nur von 20% der Menschen gelesen und von 40% auch verstanden. Die beste und aufwendigste Lösung wäre hier, dass man sich für verschiedene Anzahl von Monitoren die Position einzeln merkt. Je nachdem wieviele Monitore derzeit aktiv sind, wird die Anwendung eben auf die gespeicherte Position gesetzt. |
Re: Anzahl Monitore ermitteln (Anwendung verschwindet bzw. n
Zu peschais Vorschlag: Unbedingt daran denken, dass die linke obere Ecke des primären Monitors immer (0, 0) ist. Ein zweiter Monitor kann also auch negative Koordinaten haben. Im Endeffekt ist es vermutlich das "sicherste", für den Fall, dass das Fenster nicht sichtbar ist, es auf den primären Monitor zu verschieben.
Was nun das Schuldsein angeht, wie gesagt, auch wenn das Fenster außerhalb des Bildschirms ist, kann man es ja per Systemmenü wieder heranholen und dann stellt sich eben die Frage, ob man jeden erdenklichen Fall, der auftreten kann, auch abfangen muss. Die gegebenenfalls anzuzeigende Nachricht betreffend, wie schon bemerkt, sind Nachrichten immer schlecht, wenn sie nicht absolut notwendig sind. Vermutlich ist eine einfache Prüfung, ob das Hauptfenster wenigstens teilweise sichtbar ist, und gegebenenfalls Verschieben auf den primären Monitor, die beste Lösung, wenn man nicht zu viel Aufwand treiben will. Wenn du sowas wie Positionen-Speichern für jede Auflösung und jede Monitorkombination implementierst, dann ist das erstens ein Feature, was nur einer verschwindend geringen Nutzerzahl zu gute kommt, und zweitens kannst du es dann ja als Komponente in der DP zur Verfügung stellen :mrgreen: |
Re: Anzahl Monitore ermitteln (Anwendung verschwindet bzw. n
Zitat:
Dazu muss man in der Taskleiste die rechte Maustaste auf die Anwendung klicken und "Verschieben" anklicken. Dann muss man eine Cursortaste drücken, um mit der Maus das Fenster verschieben zu können, ohne auf die Titelleiste klicken zu müssen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz