Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ShowMessage ungewollt auf zweitem Monitor (https://www.delphipraxis.net/136491-showmessage-ungewollt-auf-zweitem-monitor.html)

mcmichael 1. Jul 2009 15:22


ShowMessage ungewollt auf zweitem Monitor
 
Hallo Experten,

ich verwende einen zweiten Monitor, der Windows-Desktop ist auf diesen erweitert.
Im Programm wird das Fenster der Message nach dem Showmessage auf diesem
zweiten Monitor dargestellt. Das Form aus dem ich Showmessage aufrufe ist
auf dem ersten und der ist auch der Primär-Monitor.
Weiß jemand wie ich das Verhalten beeinflussen kann?

Danke,
McMichael

Bernhard Geyer 1. Jul 2009 15:44

Re: ShowMessage ungewollt auf zweitem Monitor
 
Welche Delphi-Version? Ältere haben so ihre Probleme mit Mehr-Bildschirmbetrieb.

Sherlock 1. Jul 2009 15:45

Re: ShowMessage ungewollt auf zweitem Monitor
 
Wo liegt das MainForm zur Designzeit? Wird es zur Laufzeit verschoben?
Welche Option für die Postiotn des MainForms ist gesetzt? (poDesigned/poScreenCenter)

Sherlock

mcmichael 1. Jul 2009 19:50

Re: ShowMessage ungewollt auf zweitem Monitor
 
Zitat:

Welche Delphi-Version? Ältere haben so ihre Probleme mit Mehr-Bildschirmbetrieb.
Delphi 5 - definitiv eines der älteren. Von Delphi 2009 lasse ich zur Zeit lieber
die Pfoten - das Programm liefert bei Kompilierung durch D2009 ab und zu Exceptions.

Zitat:

Wo liegt das MainForm zur Designzeit? Wird es zur Laufzeit verschoben?
Welche Option für die Postiotn des MainForms ist gesetzt? (poDesigned/poScreenCenter)
Das MainForm liegt auf dem ersten Monitor. Es wird nicht verschoben.
poDesigned ist gesetzt. Und auch beim Entwurf liegt's auf dem ersten Monitor.

himitsu 1. Jul 2009 20:21

Re: ShowMessage ungewollt auf zweitem Monitor
 
Delphi-Quellcode:
// dieses
ShowMessage(Msg);

// ruft jenes auf
ShowMessagePos(Msg, -1, -1);

// welches wiederum an dieses weiterleitet
MessageDlgPos(Msg, mtCustom, [mbOK], 0, -1, -1);

// was nochmals an das weitergeleitet wird
MessageDlgPosHelp(Msg, mtCustom, [mbOK], 0, -1, -1, '');

// welches dann WindowsVersions- und Themeabhängig dort weitergeht
DoTaskMessageDlgPosHelp('', Msg, mtCustom, [mbOK], 0, -1, -1, '')
// oder
DoMessageDlgPosHelp(CreateMessageDialog(Msg, mtCustom, [mbOK]), 0, -1, -1, '');

// und CreateMessageDialog erstellt es letztendlich dort
Left := (Screen.Width div 2) - (Width div 2);
Top := (Screen.Height div 2) - (Height div 2);
also bei ShowMessage kannst du nix festlegen
und es ist auch vollkommen unabhängig von einer Form, von wessen Ereignisprozeduren es aus aufgerufen wird.
(denn keine der Funktionen da oben bekommt mitgeteilt, an welcher Form es sich ausrichten soll :zwinker: )

Ab ShowMessagePos kannst du die Position selbst festlegen.

Aber es wäre einfacher einen Dialog zu nehmen, welcher seine "Mutter"-Form mitgeteilt bekommt und sich dann daran ausrichtet.

mcmichael 1. Jul 2009 20:25

Re: ShowMessage ungewollt auf zweitem Monitor
 
fantastisch - Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz