![]() |
Form erneut zentrieren
Hey Dp'ler
Ich hab folgendes Problem, ich rufe über mein Programm das Game TuxRacer auf. Dieser hat nun eine gewisse Auflösung. Wenn jetzt der TuxRacer beendet wird hab ich das Problem das alle Forms die
Delphi-Quellcode:
eingestellt haben links unten im eck sind. Nun könnte ich natürlich folgendes machen:
postition := poDesktopCenter
Delphi-Quellcode:
Das finde ich allerdings recht unschön wegen dem Rechenaufwand (ja is nur 1 Flop aber den braucht es ja nicht).
procedure Tfrm_gui_training_vorhanden.FormPaint(Sender: TObject);
begin if left <> round((screen.Width - width)/2)) then position := poDesktopCenter; end; Hat jemand eine Idee wie ich das schöner lösen könnte. |
AW: Form erneut zentrieren
Wenn sich die Monitorauflösung ändert, dann wird vom windows ganz bestimmt eine entsprechende Message versendet.
eventuell sowas wie ![]() Tipp: Ich weiß zwar nicht ab welcher Delphi-Version es das gibt, aber bei mir gibt es ![]() |
AW: Form erneut zentrieren
Wie fang ich den ein WM_settingchange ab?
|
AW: Form erneut zentrieren
Ich denke, so wie andere Messages auch:
Delphi-Quellcode:
Falls es TWmSettingChange nicht geben sollte, dann halt TMessage.
type
TDeinForm = class(TForm) private ... procedure WMSettingChange(var Msg: TWmSettingChange); message WM_SETTINGCHANGE; |
AW: Form erneut zentrieren
Ja das dachte ich mir eben, und hab in die Form gepackt die ich nochmal zentrieren will aber das hat überhaupt keinen Effekt gehabt. Ich habs auch versucht indem ichs in die Hauptform des Projekt gepackt hab, hatte aber auch keine Auswirkung, will sagen die Funktion sprang garnicht an.
|
AW: Form erneut zentrieren
Windows sendet sowas nur an bestimmte Toplevelfenster.
Ob die MainForm dazu zählt, weiß ich jetzt nicht genau. Mit MainFormOnTaskBar könnte die Mainform es bekommen. Ansonsten kommt sowas bei der versteckten Application-Message-Form an. Gibt es denn bei dir schon das OnSettingChange? Häng dich mal in Application.OnMessage rein und schau ob es dort vorbei kommt. Wie gesagt, ob nun wirklich WM_SETTINGCHANGE oder nicht doch etwas Anderes versendet wird, weiß ich auch nicht. WM_SETTINGCHANGE ist halt bei vielen Systemänderungen, dieser Art, erfahrungsgemäß mit im Spiel. Mußt du halt ausprobieren. PS: Es gibt Programme, welche alle Messages auflisten, welches so rumwandern. (u.a. von SysInternals) |
AW: Form erneut zentrieren
Ich habs jetzt mit
Delphi-Quellcode:
probiert, aber das wird auch nicht ausgelöst.
Application.OnSettingChange := AppChange;
Wegen dem Programm ich hab mal schnell gegoogelt aber nichts in den bei SySinternals gefunden. Kannst du mir vllt schnell nen Link posten? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:49 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 by Thomas Breitkreuz