![]() |
AW: 10.3.1: OnActivate wird vor OnCreate ausgeführt
Zitat:
Zitat:
|
AW: 10.3.1: OnActivate wird vor OnCreate ausgeführt
Delphi-Quellcode:
Hallo Uwe
OK! Ich kann das hier immer noch nicht reproduzieren bzw. hatte noch keine Zeit eine passende VM zu erstellen.
Ich nutze dazu keine VM, sondern ein Notebook mit einem "normalen" Windows Home mit Anzeige Skalierung 125%, ohne zweiten Monitor Windows Home Version 10.0.17763 Build 17763 und Delphi 10.3 Version 26.0.33219.4899 (Ich wiess grad nicht, ob es da bereits ein Update gab (?) und damit vielleicht bereits einen Fix.) |
AW: 10.3.1: OnActivate wird vor OnCreate ausgeführt
Zitat:
Wenn eine automatische Größenveränderung / -berechnung eines Formulares durchzuführen ist, ist mit dem Auftreten eines Fehlers (falscher Abfolge der Ereignisse OnCreate und OnActivate), bedingt durch den Aufruf von ![]() |
AW: 10.3.1: OnActivate wird vor OnCreate ausgeführt
Zitat:
|
AW: 10.3.1: OnActivate wird vor OnCreate ausgeführt
Zitat:
- Primär Monitor (4k) auf 100%, Sekundär > 100% -> Kein Fehler feststellbar - Primär Monitor (4k) > 100%, Sekundär >= 100% -> Der Fehler tritt auf - Notebook mit HD-Auflösung -> Sobald die Skalierung >100% ist, tritt der Fehler auf - Wenn beim Minimalbeispiel (2 Forms) beim Form2 "wsMaximized" und "Scaled = False" eingestellt ist, wird das Form2 nicht angezeigt. - Der Fehler tritt grundsätzlich auch bei W7 Pro auf - Bei 10.2.3 tritt der Fehler auch auf, wenn aber der Patch von Uwe eingespielt ist, funktioniert es wie gewohnt. |
AW: 10.3.1: OnActivate wird vor OnCreate ausgeführt
Zitat:
|
AW: 10.3.1: OnActivate wird vor OnCreate ausgeführt
Wenn ich den Code in VCL.Forms und VCL.Controls korrekt lese, dann tritt Activate vor Create auf, wenn WindowState=wsMaximized gesetzt wird, Scaled=TRUE belassen wird, mindestens Windows 6.3 installiert ist und wenn
Winapi.Windows.USER_DEFAULT_SCREEN_DPI <> GetCurrentPPIScreen( ) Bei meinem System: Winapi.Windows.USER_DEFAULT_SCREEN_DPI 96 GetCurrentPPIScreen( ) 120 => procedure TCustomForm.ScaleNormalSize(M, D: Integer); wird aufgerufen und damit, weil WindowState = wsMaximized dann irgendwann SetWindowPlacement(Handle, @WindowPlacement); => OnActivate Falls jemand nach der Änderung (Code unten) (and not ( fsCreating in FFormState)
Delphi-Quellcode:
procedure TCustomForm.ScaleNormalSize(M, D: Integer);
var WindowPlacement: TWindowPlacement; begin if ( WindowState = wsMaximized ) and not ( fsCreating in FFormState ) then begin noch Probleme hat, dann suche ich noch einmal :-D. |
AW: 10.3.1: OnActivate wird vor OnCreate ausgeführt
Zitat:
Aber einfach and not ( fsCreating in FFormState in der offiziellen Emba-Unit in TCustomForm.ScaleNormalSize einfügen und damit sollte es gut sein? Darf ich das als CE_Nutzer überhaupt? :lol: |
AW: 10.3.1: OnActivate wird vor OnCreate ausgeführt
Zitat:
Testweise habe ich die 32-Bit VCL-Version neu kompiliert und das Minimalbeispiel mit zwei Formularen funktionierte bei meinem Testrechner (Laptop mit HD Auflösung) wie erwartet :-) |
AW: 10.3.1: OnActivate wird vor OnCreate ausgeführt
Wie pflegt man die Änderung ein? Einfach in die Unit schreiben, speichern und vorhandene Projekte bereinigen + kompilieren?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:17 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-2025 by Thomas Breitkreuz