Einzelnen Beitrag anzeigen

DevilsCamp
(Gast)

n/a Beiträge
 
#1

ShowMessage auf bestimmten Bildschirm

  Alt 13. Mär 2006, 16:16
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
  Mit Zitat antworten Zitat