Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Form Position beim Programmstart setzen (https://www.delphipraxis.net/211735-form-position-beim-programmstart-setzen.html)

TurboMagic 27. Okt 2022 21:36

Form Position beim Programmstart setzen
 
Hallo,

an welcher Stelle in D11.2 kann ich Left und Top
meines Hauptfensters zur Laufzeit setzen um das Fenster
zu positionieren?

Im OnCreate und OnShow hat es nicht geklappt.
Wie muss .Position eingestellt sein?

Ändern von Width und Height im klappt.

Grüße
TurboMagic

KodeZwerg 27. Okt 2022 21:38

AW: Form Position beim Programmstart setzen
 
Stell sicher das Position auf poDesigned steht dann sollte es im OnCreate eigentlich keine Probleme geben.

//edit
Gerade getestet, funktioniert.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Self.Position := poDesigned;
  Self.Left := 500;
  Self.Top := 500;
end;

TurboMagic 27. Okt 2022 21:49

AW: Form Position beim Programmstart setzen
 
Probiere ich nachher! Danke!

himitsu 27. Okt 2022 23:46

AW: Form Position beim Programmstart setzen
 
Je nach Position behandelt die VCL das unterschiedlich.
teileise wird Left/Top/Monitor dann im/nach dem Contruktor überschrieben, oder vor oder nach deinem OnShow bzw. auch OnActivate.

poDesigned sagt = ALLES wie ich es sage ... such/änder DU böse VCL nichts

hoika 28. Okt 2022 04:57

AW: Form Position beim Programmstart setzen
 
Hallo,
FormActivate sollten immer klappen ...

jaenicke 28. Okt 2022 09:00

AW: Form Position beim Programmstart setzen
 
Zitat:

Zitat von hoika (Beitrag 1513988)
Hallo,
FormActivate sollten immer klappen ...

Aber Vorsicht:
Das wird nicht nur einmal ausgeführt, so dass man sich dann noch merken muss, dass der erste Aufruf schon erfolgt war.

Deshalb würde ich das für solche "Nach Start und Formanzeige"-Aktionen auch nicht empfehlen. Besser ist, wenn man sich selbst z.B. im OnCreate per PostMessage eine Nachricht schickt. Die wird dann auch nach dem Starten verarbeitet, aber eben ganz von alleine nur einmal und außerhalb der internen Formularlogik.

Für diesen Zweck hier ist das aber gar nicht nötig, wie ja schon geschrieben wurde.

TurboMagic 28. Okt 2022 09:27

AW: Form Position beim Programmstart setzen
 
Zitat:

Zitat von KodeZwerg (Beitrag 1513979)
Stell sicher das Position auf poDesigned steht dann sollte es im OnCreate eigentlich keine Probleme geben.

//edit
Gerade getestet, funktioniert.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Self.Position := poDesigned;
  Self.Left := 500;
  Self.Top := 500;
end;

Funktioniert wie es soll. Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:02 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