Wie Bekomme ich den Brauchbare Koordinaten auf dem Bildschirm in Delphi
Mit Bildschirm.DesktopHeight und Bildschirm.DesktopWidth, ich kann die Größe der "virtuellen" desktop und ich glaube, das funktioniert für einen oder mehrere Monitore.
Ich Speichere die position (top und left) und Größe (Höhe und Breite) meine Anwendung in die registry, wenn es sich schließt. Wenn es öffnet, ich will, um sicherzustellen, dass es vollständig sichtbar, da Sie möglicherweise verschoben wurden, teilweise außerhalb des sichtbaren Bereichs, oder die Bildschirmgröße geändert haben, zum Beispiel über den Bildschirm-Einstellungen oder entfernen eines Monitors.
Kann ich im Grunde tun Sie es mit diesem code:
if MyForm.Width > screen.DesktopWidth then
MyForm.Width := screen.DesktopWidth;
if MyForm.Height > screen.DesktopHeight then
MyForm.Height := screen.DesktopHeight;
if (MyForm.Left + MyForm.Width) > screen.DesktopWidth then
MyForm.Left := screen.DesktopWidth - MyForm.Width;
if MyForm.Left < 0 then MyForm.Left := 0;
if (MyForm.Top + LogoAppForm.Height) > screen.DesktopHeight then
MyForm.Top := screen.DesktopHeight - LogoAppForm.Height;
if MyForm.Top < 0 then MyFormTop := 0;
Dies funktioniert okay, außer dass es berücksichtigt nicht die Taskleiste, die ist in der Regel (aber nicht immer) am unteren Rand des Desktops. Also, wenn die Taskleiste ist in der Art und Weise meiner Anwendung Fenster, meine Anwendung bekommt verdeckt.
Wie kann ich die nutzbar-Lage und-Größe die Einstellungen des Bildschirms, schließen Sie den Speicherort der Taskleiste?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir nicht sicher, dass Windows wirklich so funktioniert, wie Sie denken, es funktioniert - ich habe mehrere Monitore, aber Sie haben nicht die gleiche Höhe - also mein desktop nicht haben eine einheitliche Höhe aller Monitore.
Was ich Tue, ist die Verwendung von Screen.MonitorCount und der Bildschirm.Monitore array arbeiten aus, die der monitor enthält die meisten des Fensters, und dann finden Sie ein passendes Rechteck auf dem Bildschirm. Die WorkareaRect Eigenschaft von TMonitor gibt Sie die Grenzen der Arbeitsbereich auf einen bestimmten monitor, die schließt alle Taskleisten oder Symbolleisten.
Sollten Sie verwenden Bildschirm.Arbeitsbereich* Eigenschaften:
oder
Bestimmen Sie den Arbeitsbereich für das aktuelle Formular, Monitor verwenden.WorkareaRect. z.B.
um die form, die Größe, um die maximale Fläche ohne Maximierung es.
Sollten Sie auch einen Blick auf die TCustomForm.MakeFullyVisible Methode.
Vom D2006 Hilfe:
"MakeFullyVisible überprüft, ob die form passt vollständig auf dem angegebenen monitor. Wenn nicht, es positioniert die form so, dass es passt, wenn möglich."