AGB  ·  Datenschutz  ·  Impressum  







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

Form Left/Top Problem

Ein Thema von lxo · begonnen am 17. Jun 2021 · letzter Beitrag vom 17. Jun 2021
Antwort Antwort
lxo

Registriert seit: 30. Nov 2017
288 Beiträge
 
Delphi 12 Athens
 
#1

Form Left/Top Problem

  Alt 17. Jun 2021, 11:03
Hallo,

kann mir einer erklären warum ein Form bei mir nicht an der richtigen Position geöffnet wird?
Wenn ich Left von 0 bis 1594 setze kein Problem.
Setze ich aber Left auf 1595 oder höher, landet das Form auf einmal ganz nach links und aus dem Screen heraus.

Delphi-Quellcode:
  var lForm: TForm65;
  Application.CreateForm( TForm65, lForm);
  lForm.Position := poDesigned;
  lForm.Left := StrToInt( Edit1.Text); // 0-1594 ok | ab 1595 falsch
  lForm.Top := StrToInt( Edit2.Text);
  lForm.Show;
Im Anhang ist ein Beispielprojekt + Video auf dem man das Problem nochmal genau sieht.

Mein Bildschirm hat die Auflösung
1920x1200
Angehängte Dateien
Dateityp: 7z FormLeftTop.7z (349,3 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#2

AW: Form Left/Top Problem

  Alt 17. Jun 2021, 11:11
Moin...
Wie groß ist denn lForm.Width?
Was sagt der Debugger nach dem Setzen?

Geändert von haentschman (17. Jun 2021 um 11:14 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Form Left/Top Problem

  Alt 17. Jun 2021, 11:45
Hallo,
was soll das poDesigned?
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Form Left/Top Problem

  Alt 17. Jun 2021, 12:49
was soll das poDesigned?
Delphi lädt einen Teil der Auto-Pos im Create, aber einen Teil auch erst im OnShow ... und falls es z.B. beim Show ein poDefault wäre, dann würde Top/Left von Delphi überschrieben. roll:

Natürlich ist Delphi zu dämlich, um selbstständig bei Zuweisungen an Top/Left entsprechende das Position anzupassen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (17. Jun 2021 um 12:51 Uhr)
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#5

AW: Form Left/Top Problem

  Alt 17. Jun 2021, 12:54
Probiere mal lForm.DefaultMonitor := dmDesktop;
  Mit Zitat antworten Zitat
lxo

Registriert seit: 30. Nov 2017
288 Beiträge
 
Delphi 12 Athens
 
#6

AW: Form Left/Top Problem

  Alt 17. Jun 2021, 12:57
Wenn ich etwas anderes außer poDesigned nehme, macht Delphi erst Recht was es will damit
Zitat:
poDesigned
Das Formular wird mit der während des Entwurfs festgelegten Größe und Position angezeigt.

pdDefault
Größe und Position des Formulars werden vom Betriebssystem festgelegt. Bei jedem Start der Anwendung wird das Formular ein wenig nach unten und nach rechts verschoben. Unabhängig von der aktuellen Bildschirmauflösung wird sein rechter Rand immer in der Nähe des rechten Bildschirmrandes und sein unterer Rand in der Nähe des unteren Bildschirmrandes angezeigt.

Das Betriebssystem unterstützt dies nur für überlappende Fenster. Für ein Popup- oder untergeordnetes Fenster (z. B. mit BorderStyle gleich bsDialog oder bsNone) wird das Fenster in der oberen linken Bildschirmecke positioniert.

poDefaultPosOnly
Das Formular wird mit der während des Entwurfs festgelegten Größe angezeigt, jedoch wird seine Position vom Betriebssystem bestimmt. Bei jedem Start der Anwendung wird das Formular ein wenig nach unten und nach rechts verschoben. Kann das Formular ohne Größenänderung nicht weiter verschoben werden, wird es am linken oberen Bildschirmrand platziert.

Das Betriebssystem unterstützt dies nur für überlappende Fenster. Für ein Popup- oder untergeordnetes Fenster (z. B. mit BorderStyle gleich bsDialog oder bsNone) wird das Fenster in der oberen linken Bildschirmecke positioniert.

poDefaultSizeOnly
Das Formular wird an der während des Entwurfs festgelegten Position angezeigt, jedoch wird seine Größe vom Betriebssystem bestimmt. Unabhängig von der aktuellen Bildschirmauflösung wird sein rechter Rand immer in der Nähe des rechten Bildschirmrandes und sein unterer Rand in der Nähe des unteren Bildschirmrandes angezeigt.

poScreenCenter
Das Formular behält die Größe bei, die es während des Entwurfs hatte, wird aber in der Mitte des Bildschirms angezeigt. In Anwendungen mit mehreren Monitoren kann das Formular von dieser Position komplett auf einen (in der Eigenschaft DefaultMonitor festgelegten) Monitor verschoben werden.

poDesktopCenter
Das Formular behält die Größe bei, die es während des Entwurfs hatte, wird aber in der Mitte des Bildschirms angezeigt. In Anwendungen mit mehreren Monitoren werden keine Anpassungen durchgeführt.

poMainFormCenter
Das Formular behält die Größe bei, die es während des Entwurfs hatte, wird aber in der Mitte des Hauptformulars der Anwendung angezeigt. In Anwendungen mit mehreren Monitoren werden keine Anpassungen durchgeführt. Diese Positionierung sollte nur für Sekundärformulare angewandt werden. Bei einem Hauptformular wird dasselbe Verhalten wie von poScreenCenter erzielt.

poOwnerFormCenter
Das Formular behält die Größe bei, die es während des Entwurfs hatte, wird aber in der Mitte des in der Eigenschaft Owner angegebenen Formulars angezeigt. Legt die Eigenschaft Owner kein Formular fest, wird mit dieser Positionierung dasselbe Verhalten wie von poMainFormCenter erzielt.
  Mit Zitat antworten Zitat
lxo

Registriert seit: 30. Nov 2017
288 Beiträge
 
Delphi 12 Athens
 
#7

AW: Form Left/Top Problem

  Alt 17. Jun 2021, 12:59
Probiere mal lForm.DefaultMonitor := dmDesktop;
Das klappt, danke.


Zitat:
dmDesktop
Es wird nicht versucht, das Formular auf einem bestimmten Monitor anzuzeigen.

dmPrimary
Das Formular wird auf dem Monitor angezeigt, der in der Eigenschaft Monitors des globalen Bildschirmobjekts als erster Monitor aufgeführt ist.

dmMainForm
Das Formular wird auf demselben Monitor wie das Hauptformular der Anwendung angezeigt.

dmActiveForm
Das Formular wird auf demselben Monitor wie das aktive Formular angezeigt.
  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 05:26 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