AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Form erneut zentrieren

Ein Thema von PhilmacFLy · begonnen am 16. Feb 2012 · letzter Beitrag vom 17. Feb 2012
Antwort Antwort
Benutzerbild von PhilmacFLy
PhilmacFLy

Registriert seit: 20. Jan 2008
Ort: Nürnberg
340 Beiträge
 
FreePascal / Lazarus
 
#1

Form erneut zentrieren

  Alt 16. Feb 2012, 15:25
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
postition := poDesktopCenter eingestellt haben links unten im eck sind. Nun könnte ich natürlich folgendes machen:
Delphi-Quellcode:
procedure Tfrm_gui_training_vorhanden.FormPaint(Sender: TObject);
begin
if left <> round((screen.Width - width)/2)) then
  position := poDesktopCenter;
end;
Das finde ich allerdings recht unschön wegen dem Rechenaufwand (ja is nur 1 Flop aber den braucht es ja nicht).
Hat jemand eine Idee wie ich das schöner lösen könnte.
Philipp N.
"Programmiern ist wie küssen:
Mann kan darüber reden, mann kann es beschreiben,
aber man weiss erst, was es bedeutet,
wenn man es getan hat"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

AW: Form erneut zentrieren

  Alt 16. Feb 2012, 16:17
Wenn sich die Monitorauflösung ändert, dann wird vom windows ganz bestimmt eine entsprechende Message versendet.

eventuell sowas wie MSDN-Library durchsuchenWM_SETTINGCHANGE ?


Tipp: Ich weiß zwar nicht ab welcher Delphi-Version es das gibt, aber bei mir gibt es Delphi-Referenz durchsuchenApplication.OnSettingChange, welches vom WM_SETTINGCHANGE ausgelöst wird.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von PhilmacFLy
PhilmacFLy

Registriert seit: 20. Jan 2008
Ort: Nürnberg
340 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Form erneut zentrieren

  Alt 17. Feb 2012, 10:50
Wie fang ich den ein WM_settingchange ab?
Philipp N.
"Programmiern ist wie küssen:
Mann kan darüber reden, mann kann es beschreiben,
aber man weiss erst, was es bedeutet,
wenn man es getan hat"
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

AW: Form erneut zentrieren

  Alt 17. Feb 2012, 11:22
Ich denke, so wie andere Messages auch:
Delphi-Quellcode:
type
  TDeinForm = class(TForm)
  private
    ...
    procedure WMSettingChange(var Msg: TWmSettingChange); message WM_SETTINGCHANGE;
Falls es TWmSettingChange nicht geben sollte, dann halt TMessage.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von PhilmacFLy
PhilmacFLy

Registriert seit: 20. Jan 2008
Ort: Nürnberg
340 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Form erneut zentrieren

  Alt 17. Feb 2012, 11:40
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.
Philipp N.
"Programmiern ist wie küssen:
Mann kan darüber reden, mann kann es beschreiben,
aber man weiss erst, was es bedeutet,
wenn man es getan hat"

Geändert von PhilmacFLy (17. Feb 2012 um 12:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: Form erneut zentrieren

  Alt 17. Feb 2012, 12:19
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)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von PhilmacFLy
PhilmacFLy

Registriert seit: 20. Jan 2008
Ort: Nürnberg
340 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Form erneut zentrieren

  Alt 17. Feb 2012, 12:49
Ich habs jetzt mit Application.OnSettingChange := AppChange; probiert, aber das wird auch nicht ausgelöst.

Wegen dem Programm ich hab mal schnell gegoogelt aber nichts in den bei SySinternals gefunden. Kannst du mir vllt schnell nen Link posten?
Philipp N.
"Programmiern ist wie küssen:
Mann kan darüber reden, mann kann es beschreiben,
aber man weiss erst, was es bedeutet,
wenn man es getan hat"
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz