Forum: Algorithmen, Datenstrukturen und Klassendesign
by Jasocul,
5. Apr 2017
Da die Form erst zur Laufzeit erzeugt wird, ist das erste SetFocus nicht notwendig.
Das Problem taucht erst auf, wenn die nächste Form angezeigt wird, da die vorherige Form mit Hide "versteckt" wird. Beim Rückspung kommt dann erst ein Show, das sich auswirken darf. Daher nutze ich jetzt folgendes Workaround:
procedure TForm1.FormShow(Sender: TObject);
begin
if Application.ActiveFormHandle...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Jasocul,
5. Apr 2017
@Uwe:
Stand auch auf meiner gedanklichen ToDo-Liste zur Prüfung.
Ergebnis: Das funktioniert. Als einfacher Workaround ist das erstmal OK.
@HolgerX:
Deinen Vorschlag werde ich auch noch verfolgen.
Allerdings möchte ich nicht selber rechnen, sondern lieber das Problem grundsätzlich angehen.
Zumal die Main-Form nicht zwingend die Form ist, die als Grundlage dienen soll. Basis sollte die bis...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Jasocul,
5. Apr 2017
Nach einigen Tests habe ich folgendes festgestellt:
Sobald man eine Aktion mit dem Fenster ausführt (in meinem Fall bei einem Element des Fensters den Focus setzen), wird es zum aktiven Fenster.
Das führt dann dazu, dass bei der Prüfung des DefaultMonitors (dmActiveForm) die "falsche" Form als Grundlage genommen wird.
Da ich aber eigentlich genau das Setzen des Focus benötige im OnShow, ist...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Jasocul,
5. Apr 2017
Ups, ganz vergessen zu erwähnen.
Ja, das habe ich bereits getestet und macht auch das, was es soll.
Allerdings müsste ich dem Fall die Zentrierung auf dem Monitor selbst steuern, da sich die beiden Einstellungen nach der Position der Owner-Form, bzw. der Main-Form richten.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Jasocul,
5. Apr 2017
Moin.
Die Ausgangssituation ist wie folgt:
Ein kleines Programm wird gestartet und das Start-Fenster auf einen anderen Monitor verschoben.
Dort wird nun über einen Button ein weiteres Fenster geöffnet. Dieses wird zur Laufzeit erzeugt.
Die Einstellungen
für DefaultMonitor ist dmActiveForm und
für Position poScreenCenter.
Beim ersten Test wird das Fenster auf dem Monitor des ersten...