Ich arbeite z.Z. an einem PC mit mehreren Bildschirmen.
In einem Projekt erstelle ich bei einer bestimmten Situation im OnCreate-Ereignis ein Ausgabe mit ShowMessage. Nun musste ich feststellen, dass diese IMMER auf dem Primär-Bildschirm angezeigt wird.
Gibt es eine Möglichkeit, ShowMessage auf einem bestimmten Bildschirm darstellen zu lassen?
Hier mein Code:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
MRSetForm := TSetForm.Create(Self, true);
MRSetForm.Free;
ShowMessage('Hallo');
end;
Create von TSetForm:
Delphi-Quellcode:
constructor TSetForm.Create(AOwner: TComponent; const docenter: Boolean = false);
var
x : Integer;
y : Integer;
i : Integer;
mo : TPoint;
p : TPoint;
m : TMonitor;
n : TMonitor;
a : Integer;
begin
inherited Create(AOwner);
if (AOwner is TForm) then
myOwner := TForm(AOwner)
else
myOwner := nil;
if (Assigned(myOwner)) then
begin
x := myOwner.Left;
y := myOwner.Top;
mo.X := x;
mo.Y := y;
GetCursorPos(p);
m := Screen.MonitorFromPoint(mo);
n := Screen.MonitorFromPoint(p);
if (not docenter) then
begin
x := x-m.Left+n.Left;
y := y-m.Top+n.Top;
end
else
begin
x := n.Left+(n.Width div 2)-(myOwner.Width div 2);
y := n.Top+(n.Height div 2)-(myOwner.Height div 2);
end;
myOwner.Left := x;
myOwner.Top := y;
end;
end;
MRSetForm ist also nur dazu da, die Form, die als Owner angegeben wurde, auf dem Bildschirm darzustellen, auf dem der Mauszeiger sich gerade befindet.
Nur leider hält sich ShowMessage da nicht dran