delphi 設置多屏幕

//poScreenCenter時,窗體會顯示到主顯示器的中央
MainForm.Position := poScreenCenter;orm

 

function TGAEAMainForm.GetWorkArea(var R : TRect) : Boolean;
var
I : Integer;
begin
Result := False;
for I := 0 to Screen.MonitorCount -1 do
if Screen.Monitors[I].Primary then
begin
R := Screen.Monitors[I].WorkareaRect;
Result := True;
Break;
end;
end;索引

procedure TGAEAMainForm.TempInitForm;
procedure SetFormMonitor(Form:TCustomForm;MonitorIndex:integer);
begin
if (MonitorIndex>-1) and (MonitorIndex<Screen.MonitorCount) then //保證屏幕索引在範圍內
begin
Form.Left := 0;
Form.Top := 0;
Form.SetBounds(Screen.Monitors[MonitorIndex].Left + ((Screen.Monitors[MonitorIndex].Width - Form.Width) div 2),Screen.Monitors[MonitorIndex].Top + ((Screen.Monitors[MonitorIndex].Height - Form.Height) div 2),Form.Width, Form.Height);
end;
end;
function GetPriMaryScreenIndex: Integer;
var
I : Integer;
begin
for I := 0 to Screen.MonitorCount -1 do
if Screen.Monitors[I].Primary then
begin
Result := I;
Break;
end;
end;
var
vR: TRect;
vPrimaryIndex: Integer;
begin
vPrimaryIndex := GetPriMaryScreenIndex;
if vPrimaryIndex <> -1 then
SetFormMonitor(MainForm, vPrimaryIndex);
// if GetWorkArea(vR) then
// begin
// MainForm.Left := vR.Left;
// MainForm.Top := vR.Top;
// end;
end;it