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).