Delphi-PRAXiS
Seite 5 von 8   « Erste     345 67     Letzte »    

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/)
-   -   10.3.1: OnActivate wird vor OnCreate ausgeführt (https://www.delphipraxis.net/200117-10-3-1-onactivate-wird-vor-oncreate-ausgefuehrt.html)

DieDolly 23. Mär 2019 19:01

AW: 10.3.1: OnActivate wird vor OnCreate ausgeführt
 
Danke für die Demo.

Zitat:

(Erstellt mit D6.. )
412 KiB kompilierter Quellcode, in seiner reinsten Form :thumb:

Sieht gut und verständlich aus. Vom Prinzip her genau wie mein OnPaint-Ansatz, nur dass du mit deiner Umsetzung keine nervige Variable brauchst, um dir den Status zu merken.
Hat Vorteile die nicht mehr zu haben finde ich.

HolgerX 23. Mär 2019 19:16

AW: 10.3.1: OnActivate wird vor OnCreate ausgeführt
 
Hmm..

Kannst das Test-Tool ja mal gegen deine VMs testen und sehen, wann dort das 'AfterShow' kommt.
Eventuell eine bessere Alternative, wenn das OnActivate kommt, wann es will ;)

DieDolly 23. Mär 2019 19:24

AW: 10.3.1: OnActivate wird vor OnCreate ausgeführt
 
Verstehe nicht was du damit sagen möchtest?
Ist es OS-abhängig, ob dein Ansatz funktioniert oder nicht?


Edit spät in der Nacht
einen Nachteil habe ich wohl gefunden. Wenn man ein Programm mit diesem Mechanismus ins Systemtray minimiert und zurückholt, wird DoAfterShow trotzdem wieder ausgeführt.
Um eine Zwischenvariable kommt man also in beiden Fällen nicht drumherum. Außer man minimiert das Programm niemals in den Systemtray.

HolgerX 23. Mär 2019 23:42

AW: 10.3.1: OnActivate wird vor OnCreate ausgeführt
 
Hmm..

Also, wenn ich meine D6 Applikation minimiere und dann wieder hochhole wird bei mir nur OnPaint aufgerufen, jedoch kein OnShow und somit kein AfterShow.
(Windows 8.1 64Bit auf Notebook)

Ich dachte es geht um OnActivate VOR OnShow?
Es sollte doch in der VM falsch sein...

Teste mal mit meinem Tool, ob auch dort AfterShow vor OnCreate kommt...

DieDolly 23. Mär 2019 23:57

AW: 10.3.1: OnActivate wird vor OnCreate ausgeführt
 
Zitat:

Es sollte doch in der VM falsch sein...
In zwei VMs konnte ich das nicht richtig nachvollziehen. Getestet aber leider nur unter Windows XP und 7.
Ich habe dort dieselben Ergebnisse bekommen wie unter dem Windows 10 Host.

Zitat:

Teste mal mit meinem Tool, ob auch dort AfterShow vor OnCreate kommt...
Windows 10 Host, Windows XP und 7 Gast alles wie es sein soll. Vielleicht doch ein Delphi-Problem (was es bei D6 noch nicht gab) und weniger Windows?

Zum Minimieren:
ich meine zum Systemtray, also komplett weg aus der Taskleiste und nur noch ein kleines Icon im Statusbereich.

Uwe Raabe 24. Mär 2019 10:27

AW: 10.3.1: OnActivate wird vor OnCreate ausgeführt
 
Zitat:

Zitat von DieDolly (Beitrag 1428532)
Vielleicht doch ein Delphi-Problem (was es bei D6 noch nicht gab) und weniger Windows?

Spielt eigentlich keine Rolle. Wenn es wirklich an der Windows-Version (und vermutlich einem Haufen anderer Bedingungen für das System) liegt, dann kann man das ja in Delphi abfangen und passend lösen. Dazu müsste man es aber halt schon reproduzieren können. Leider genügte keine der bisherigen Beschreibungen dieser Anforderung.

Der Hinweis auf das SetFocusControl und die DPI Umrechnung ist ja durchaus hilfreich. Ohne einen reproduzierbaren Testfall ist es aber nahezu unmöglich den Fehler zu lokalisieren und zu beheben.

blawen 24. Mär 2019 23:22

AW: 10.3.1: OnActivate wird vor OnCreate ausgeführt
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1428456)
Zitat:

Zitat von blawen (Beitrag 1428450)
Win10 mit 4k+HD Monitor (Mischbetrieb):

Welche DPI hat der primäre Monitor?

150% (144 dpi)

Aktuell habe ich auf besagte Monitor-Kombination keinen Zugriff (Geschäfts-Monitor), aber beim testen mit zwei unterschiedlichen Notebooks (W10, HD-Auflösung) kann ich das Problem problemfrei nachstellen.
Zitat:

Bei mir ist es relativ einfach nachstellbar:

- Neues Projekt
- 2 leere Formulare

Win10 mit 4k+HD Monitor (Mischbetrieb):
- Beide Formulare mit wsMaximized-> 2 Formulare werden geöffnet/angezeigt
- Form1 auf "wsNormal" und Form2 auf "wsMaximized" -> Form2 überdeckt Form1, Form2 kann aber nicht geschlossen werden

Wenn ich nur einen HD-Monitor angeschlossen habe, funktioniert es bei mir auch mit 10.3.1 wie erwartet.
Ebenso funktioniert es mit einer gepatchten 10.2.3 wie erwartet
Sobald die Auflösung > 100% (> 96 DPI) ist, tritt das beschriebene Problem auf. Analog gilt dies bei mir bei einer ungepatchten 10.2.3.

Schlussendlich scheint die Kombination HD/4k keinen Einfluss zu haben, es reicht zumindest bei mir aus, wenn die Auflösung > 100% (> 96 DPI) ist.

DieDolly 24. Mär 2019 23:36

AW: 10.3.1: OnActivate wird vor OnCreate ausgeführt
 
Zitat:

Schlussendlich scheint die Kombination HD/4k keinen Einfluss zu haben, es reicht zumindest bei mir aus, wenn die Auflösung > 100% (> 96 DPI) ist.
Das könnte noch ein sehr interessantes Problem werden. Ich habe das eben mal nachgestellt und bekomme Create immer vor Activate. Windows 10 Pro 64 bit.

Edelfix 25. Mär 2019 07:32

AW: 10.3.1: OnActivate wird vor OnCreate ausgeführt
 
Änliches Problem:

https://www.delphipraxis.net/199789-...ml#post1426047

Uwe Raabe 25. Mär 2019 07:56

AW: 10.3.1: OnActivate wird vor OnCreate ausgeführt
 
Zitat:

Zitat von blawen (Beitrag 1428597)
Sobald die Auflösung > 100% (> 96 DPI) ist, tritt das beschriebene Problem auf.

Es ist vermutlich noch etwas subtiler: Offenbar muss der Primäre Monitor eine Auflösung > 100% haben. In meiner Mischkombination (100% - 100% - 200%) habe ich deutlich weniger Probleme mit High-DPI, vermutlich weil mein Primärer Monitor auf 100% steht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:58 Uhr.
Seite 5 von 8   « Erste     345 67     Letzte »    

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