2010年9月2日 星期四

多螢幕環境下,指定螢幕顯示畫面 (Delphi 5)

這個 Procedure 是從 Delphi 2009 的 Forms.pas 中挖出來的,在多螢幕環境之下可以將 Form 顯示在指定的螢幕上,對於要開發多螢幕應用程式的人有一些用處。
procedure MakeFullyVisible(AForm: TForm; AMonitor: TMonitor);   
var   
  ALeft: Integer;   
  ATop: Integer;   
begin   
  if AMonitor = nil then   
    AMonitor := AForm.Monitor;   
  ALeft := AForm.Left;   
  ATop := AForm.Top;   
  if AForm.Left + AForm.Width > AMonitor.Left + AMonitor.Width then   
    ALeft := AMonitor.Left + AMonitor.Width - AForm.Width;   
  if AForm.Left < AMonitor.Left then   
    ALeft := AMonitor.Left;   
  if AForm.Top + AForm.Height > AMonitor.Top + AMonitor.Height then   
    ATop := AMonitor.Top + AMonitor.Height - AForm.Height;   
  if AForm.Top < AMonitor.Top then   
    ATop := AMonitor.Top;   
  AForm.SetBounds(ALeft, ATop, AForm.Width, AForm.Height);   
end;
呼叫方法是:
MakeFullyVisible(Form1, Screen.Monitors[0]);    // 將 Form1 顯示在第一個螢幕   
MakeFullyVisible(Form2, Screen.Monitors[1]);    // 將 Form2 顯示在第二個螢幕

沒有留言: