Wie bekomme ich die nutzbaren Koordinaten des Bildschirms in Delphi?

7

Mit Screen.DesktopHeight und Screen.DesktopWidth kann ich die Größe des "virtuellen" Desktops ermitteln und ich glaube, dass dies für einen oder mehrere Monitore funktioniert.

Ich speichere die Position (oben und links) und Größe (Höhe und Breite) meiner Anwendung in der Registrierung, wenn es geschlossen wird. Wenn es geöffnet wird, möchte ich sicherstellen, dass es vollständig sichtbar ist, da es teilweise außerhalb des sichtbaren Bereichs verschoben wurde oder sich die Bildschirmgröße beispielsweise über Bildschirmeinstellungen oder das Entfernen eines Monitors geändert hat.

Ich kann das grundsätzlich mit diesem Code machen:

%Vor%

Dies funktioniert einwandfrei, außer dass die Taskleiste nicht berücksichtigt wird, die normalerweise (aber nicht immer) unten auf dem Desktop angezeigt wird. Wenn also die Taskleiste dem Fenster meiner Anwendung im Weg steht, wird meine Anwendung verdeckt.

Wie kann ich die nutzbaren Positions- und Größeneinstellungen des Bildschirms erhalten, die den Speicherort der Taskleiste ausschließen?

    
lkessler 15.09.2009, 03:04
quelle

3 Antworten

12

Ich bin mir nicht sicher, ob Windows wirklich so funktioniert, wie Sie es denken - ich habe mehrere Monitore, aber sie haben nicht die gleiche Höhe - also hat mein Desktop keine einheitliche Höhe auf allen Monitoren.

Ich benutze Screen.MonitorCount und das Screen.Monitors-Array, um herauszufinden, welcher Monitor den größten Teil des Fensters enthält, und dann ein geeignetes Rechteck auf diesem Bildschirm zu finden. Die WorkareaRect-Eigenschaft von TMonitor gibt Ihnen die Grenzen des Arbeitsbereichs auf einem bestimmten Monitor, der keine Taskleisten oder Symbolleisten ausschließt.

    
garethm 15.09.2009, 03:15
quelle
12

Sie sollten Screen.WorkArea * -Eigenschaften verwenden:

%Vor%

oder

%Vor%     
Cesar Romero 15.09.2009 03:21
quelle
3

Verwenden Sie Monitor.WorkareaRect, um den Arbeitsbereich für das aktuelle Formular zu bestimmen. z.B.

%Vor%

, um die Formulargröße auf die maximale Fläche festzulegen, ohne sie zu maximieren.

Sie sollten sich auch die TCustomForm.MakeFullyVisible Methode.

Von D2006 Hilfe:

"MakeFullyVisible prüft, ob das Formular vollständig auf den angegebenen Monitor passt. Wenn nicht, wird das Formular, falls möglich, neu positioniert."

    
Gerry Coll 15.09.2009 05:01
quelle

Tags und Links