AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Anzahl Monitore ermitteln (Anwendung verschwindet bzw. nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Anzahl Monitore ermitteln (Anwendung verschwindet bzw. nicht

Ein Thema von PaulJr · begonnen am 2. Okt 2007 · letzter Beitrag vom 2. Okt 2007
Antwort Antwort
Seite 1 von 2  1 2      
PaulJr

Registriert seit: 10. Feb 2007
Ort: Stuttgart
66 Beiträge
 
#1

Anzahl Monitore ermitteln (Anwendung verschwindet bzw. nicht

  Alt 2. Okt 2007, 11:27
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…

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.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Anzahl Monitore ermitteln (Anwendung verschwindet bzw. n

  Alt 2. Okt 2007, 11:32
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Anzahl Monitore ermitteln (Anwendung verschwindet bzw. n

  Alt 2. Okt 2007, 11:33
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
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Anzahl Monitore ermitteln (Anwendung verschwindet bzw. n

  Alt 2. Okt 2007, 11:33
Schau dir mal Delphi-Referenz durchsuchenTScreen an und dort dann Delphi-Referenz durchsuchenTScreen.MonitorCount und [oh]TScreen.Monitor[][/oh]. Die globale Instanz Screen gibt dir Zugriff auf die Klasse (also nicht selbst instanziieren).

Und zu dem Formproblem: Delphi-Referenz durchsuchenTForm.Position und Delphi-Referenz durchsuchenTForm.DefaultMonitor

Ansonsten für die Überschneidungen: MSDN-Library durchsuchenIntersectRect()
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#5

Re: Anzahl Monitore ermitteln (Anwendung verschwindet bzw. n

  Alt 2. Okt 2007, 11:48
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.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#6

Re: Anzahl Monitore ermitteln (Anwendung verschwindet bzw. n

  Alt 2. Okt 2007, 11:56
Hallo
Einfacher Vorschlag:
Delphi-Quellcode:
if (MyMainForm.Left>Screen.Width) then
  begin
    MyMainForm.Left := 100;
  end;
Peter Schaible
  Mit Zitat antworten Zitat
PaulJr

Registriert seit: 10. Feb 2007
Ort: Stuttgart
66 Beiträge
 
#7

Re: Anzahl Monitore ermitteln (Anwendung verschwindet bzw. n

  Alt 2. Okt 2007, 12:00
Hallo Programmierer

DANKE , DANKE, DANKE !!! für ALLE Antworten!

Damit komme ich schon zu Recht. Sieht recht einfach aus…

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…

Viele Grüße

Paul Jr.
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#8

Re: Anzahl Monitore ermitteln (Anwendung verschwindet bzw. n

  Alt 2. Okt 2007, 12:24
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.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#9

Re: Anzahl Monitore ermitteln (Anwendung verschwindet bzw. n

  Alt 2. Okt 2007, 12:37
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
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#10

Re: Anzahl Monitore ermitteln (Anwendung verschwindet bzw. n

  Alt 2. Okt 2007, 12:53
Zitat von OregonGhost:
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.
Das geht jedoch nicht unbedingt intuitiv.
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.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz