首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 多顯示器應用程式開發完全指南:虛擬桌面、螢幕座標與 VCL 封裝類別實戰

     編輯:Delphi

核心概念架構

虛擬桌面

Windows 將所有顯示器映射為單一虛擬桌面,座標系統原點 (0,0) 位於主顯示器左上角。非主顯示器座標可為負值。

關鍵物件模型

  • TScreen:全域單例 (Screen),管理所有顯示器資訊
  • TMonitor:單一顯示器資訊封裝 (唯讀屬性)
  • TCustomForm:表單基類,內建多螢幕支援屬性/方法

TScreen 關鍵屬性與方法

屬性/方法說明
MonitorCount顯示器數量
Monitors[Index]取得指定索引的 TMonitor 實例
DesktopLeft/Top/Width/Height虛擬桌面完整範圍
WorkAreaLeft/Top/Width/Height主顯示器工作區 (扣除工作列)
Height/Width主顯示器解析度,非虛擬桌面!
MonitorFromPoint(Point)取得包含指定點的顯示器
MonitorFromRect(Rect)取得與矩形交集最大的顯示器
MonitorFromWindow(Handle)取得視窗所在顯示器

TMonitor 關鍵屬性

屬性說明
HandleHMONITOR 控制代碼
MonitorNum顯示器編號
Primary是否為主顯示器
Left/Top/Width/Height相對虛擬桌面座標
BoundsRect完整範圍 TRect
WorkareaRect工作區範圍 TRect

表單多螢幕控制屬性

屬性選項行為
PositionpoScreenCenter置中於主顯示器
poDesktopCenter置中於虛擬桌面 (跨螢幕風險)
DefaultMonitordmDesktop不特別處理
dmPrimary顯示於 Screen.Monitors[0] (非必為主顯示器!)
dmMainForm顯示於主表單所在顯示器
dmActiveForm顯示於目前作用中表單所在顯示器

實用技巧:跨螢幕移動與完整顯示

方法一:手動設定座標


// 移動表單到第二個顯示器左上角
if Screen.MonitorCount > 1 then begin
  Form2.Left := Screen.Monitors[1].Left;
  Form2.Top := Screen.Monitors[1].Top;
end;

方法二:MakeFullyVisible 確保完整可見


Form2.MakeFullyVisible; // 自動調整位置,避免跨螢幕或超出邊界

常見陷阱與避坑指南

  • Screen.Width/Height ≠ 虛擬桌面大小:它們是主顯示器解析度。
  • dmPrimary ≠ 主顯示器:它指向 Monitors[0],實際主顯示器由 Primary 屬性決定。
  • poDesktopCenter 危險:視窗可能出現在兩螢幕交界處。
  • 非主顯示器座標可為負:左側/上方螢幕的 Left/Top 為負值。

總結

Delphi VCL 對多顯示器支援相當完善。善用 Screen.Monitors 列舉與 TMonitor 幾何資訊,配合表單的 DefaultMonitor 與 MakeFullyVisible,能輕鬆開發出專業的多螢幕應用程式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved