Einzelnen Beitrag anzeigen

DevilsCamp
(Gast)

n/a Beiträge
 
#5

Re: ShowMessage auf bestimmten Bildschirm

  Alt 14. Mär 2006, 09:47
Zitat von ringli:
Also ich löse das bei mir folgendermassen: [...]
Ich habe den Code so abgeändert, dass ich die Koordinaten angeben kann, wo der Dialog angezeigt werden soll:

Delphi-Quellcode:
function MessageDialog(const Msg: string;
                       Titel: PChar;
                       DlgType: TMsgDlgType;
                       Buttons: TMsgDlgButtons;
                       const HelpFileName: String;
                       HelpCtx: Longint;
                       Default: String;
                       const X, Y: Integer): Integer;
var
  ActForm : TCustomForm;
  DlgForm : TForm;
  SetForm : TSetForm;
begin
  DlgForm := CreateMessageDialog(Msg, DlgType, Buttons);
  with DlgForm do
    try
      if (Titel<>nil) then
        DlgForm.Caption := Titel;
        
      Font.Name := 'MS Shell Dlg';
      HelpContext := HelpCtx;
      HelpFile := HelpFileName;
      ActForm := Screen.ActiveForm;
      Left := X;
      Top := Y;
      ActiveControl := TButton(FindComponent(Default));
      Beep;
      Result := ShowModal;
    finally
      Free;
    end;
end;
Der Code funktioniert auch gut, allerdings habe ich da noch ein Problem. Sobald die Form die Aktive ist, die diese Funktion aufruft passiert folgendes:
Left hat zwar den Wert X, angezeigt wird der Dialog allerdings immer auf dem Bildschirm, auf dem sich die aktive Form befindet. Left hat dann scheinbar den Wert
Code:
Left = (Left MOD (Bildschirmbreite))+(Linker Rand des Monitors, auf dem aktive Form liegt)
D.h. ich kann den Dialog NICHT auf einem anderen Bildschirm anzeigen lassen, wie die aktive Form (z.B. auf dem Monitor, auf dem sich gerade der Mauszeiger befindet).
  Mit Zitat antworten Zitat