delphi 设置多屏幕

//poScreenCenter时,窗体会显示到主显示器的中央

MainForm.Position := poScreenCenter;

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;