Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Windows 10 HighDPI (https://www.delphipraxis.net/197324-windows-10-highdpi.html)

hoika 30. Jul 2018 20:14

Windows 10 HighDPI
 
Hallo,
also irgendwie bekomme ich das nicht hin.

https://www.helpandmanual.com/downloads_delphi.html
Dort gibt es eine Tutorial für HighDPI.

aber egal, was ich mache

Label1.Caption:= IntToStr(Screen.PixelsPerInch);

Es wird immer 96 angezeigt.

Das folgende Manifest habe von der Seite.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="*"/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
<asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:windowsSettings
xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>True/PM</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>


Ich nenne meine Manifest-Datei für projekt1.exe dann einfach projekt1.exe.manifest.
Die Datei wird aber nicht erkannt.
Immer steht im Label 96.
Was muss ich denn noch machen??

EWeiss 30. Jul 2018 20:25

AW: Windows 10 HighDPI
 
Logisch oder? PixelsPerInch sind nun mal 96..
Du solltest die DPI schon berechnen.. ;)

Und wunder es hat nichts mit WIn10 zu tun.

gruss

hoika 30. Jul 2018 20:28

AW: Windows 10 HighDPI
 
Hallo,
deaktiviere ich unter Projekt-Optionen die Laufzeit-Themes, klappt es bei einem neuen Projekt.
Bei 125% ergibt das PixelsPerInch=120 (96*1.25) wie erwartet.

Bei meinem anderen existierenden Projekt bekomme ich immer 96, egal, was ich unter Windows für eine Skalierung einstelle.

Das hatte ich schon mal bei einem anderen Projekt.
Muss wohl die DPROJ wieder neu erzeugen ;(


Was meinst Du mit berechnen?
Genau das machte bis Windows8.1 (da ging der Murks los) das Screen.PixelPerInch immer selber.
Ab dem Zeitpunkt ging das mit dem Manifest los, um Windows daran zu hindern, selber zu skalieren,
was meistens sehr vermurkst aussieht.

Dalai 30. Jul 2018 20:39

AW: Windows 10 HighDPI
 
Zitat:

Zitat von hoika (Beitrag 1409152)
deaktiviere ich unter Projekt-Optionen die Laufzeit-Themes, klappt es bei einem neuen Projekt.

Logisch. Die Aktivierung der Option Laufzeit-Themes sorgt für ein Einbetten eines Manifests in das Kompilat. Die Standardeinstellung von Windows ist, externe Manifeste zu ignorieren, wenn es bereits ein eingebettetes gibt. Deswegen erstellt man in vielen Fällen ein eigenes Manifest und bindet selbiges ein und lässt die Option Laufzeit-Themes deaktiviert.

Grüße
Dalai

EWeiss 30. Jul 2018 20:39

AW: Windows 10 HighDPI
 
sorry hatte Screen.. davor übersehen.
Denke wenn du mal suchst bsp.
https://stackoverflow.com/questions/...ows-use-medium

wirst du etwas finden woran es liegen könnte.
Ich berechne das Ratio immer selbst.

bsp.
ratio := GetDeviceCaps(PaintBox.Canvas.Handle, LOGPIXELSX) / 96.0;

Zitat:

Logisch. Die Aktivierung der Option Laufzeit-Themes sorgt für ein Einbetten eines Manifests in das Kompilat
:thumb::thumb::thumb:
Das wird es wohl sein!

gruss

hoika 30. Jul 2018 21:04

AW: Windows 10 HighDPI
 
Hallo,
ja, deaktiviere ich die Laufzeitthemes bei einem neuen Projekt, klappt das.
Mein existierendes grosses Projekt zeigt immer 96 an trotz deaktivierten Laufzeitthemes.

EWeiss 30. Jul 2018 21:16

AW: Windows 10 HighDPI
 
Zitat:

Zitat von hoika (Beitrag 1409156)
Hallo,
ja, deaktiviere ich die Laufzeitthemes bei einem neuen Projekt, klappt das.
Mein existierendes grosses Projekt zeigt immer 96 an trotz deaktivierten Laufzeitthemes.

Hmm.. hast du dann auch in diesen dein Manifest hinzugefügt?
In deiner Ressource und deaktivierter Laufzeittheme.

gruss

KodeZwerg 30. Jul 2018 21:56

AW: Windows 10 HighDPI
 
Schau doch mal in die .exe rein, Resource Explorer liegt Delphi ja bei, welches Manifest hat die .exe drinn?

hoika 30. Jul 2018 22:08

AW: Windows 10 HighDPI
 
Hallo,
liegt wohl am IBDAC, der bringt ein Dummy-Manifest mit,
so ein Blödsinn!!!

KodeZwerg 30. Jul 2018 23:02

AW: Windows 10 HighDPI
 
Zumindest weißt Du jetzt woran es liegt, ist doch auch was Wert :)

jaenicke 31. Jul 2018 04:21

AW: Windows 10 HighDPI
 
Nebenbei, auch für alle späteren Leser: In höheren Delphiversionen gibt es ein entsprechendes Häkchen für HighDPI in den Projekteinstellungen. Das funktioniert normalerweise auch mit solchen Fremdmanifesten aus Komponenten, weil es die offenbar überschreibt. Eventuell klappt es auch, wenn man das eigene Manifest in die Ressourcenverwaltung des Projekts hinzufügt.

Und konnte man nicht bereits in xe4 in den Projektoptionen eine eigene Manifest-Datei angeben? Vielleicht klappt das ja auch.

hoika 31. Jul 2018 06:06

AW: Windows 10 HighDPI
 
Hallo,
bei mir was es doch nicht IBDAC (sorry ;) ),
sondern XPMan.pas, was noch an zwei Stellen eingebunden war.

Jetzt zeigt er mir zwar die richtigen DPI an (120) an, skaliert aber nicht.

Ich schaue heute Abend mal weiter.

Das nervt.

KodeZwerg 31. Jul 2018 06:57

AW: Windows 10 HighDPI
 
Lad doch mal Dein Demo DPI Projekt (.dpr .pas .frm .res) heut abend hoch, schwer zu sagen wo noch überall gedreht werden muss, Form-Einstellungen, korrektes Manifest, Projekt Einstellungen..... da mitten mang ist halt was falsch.

hoika 31. Jul 2018 14:28

AW: Windows 10 HighDPI
 
Hallo,
ich meinte, mein eigentliches Programm skaliert nicht,
obwohl jetzt die PixelsPerInch mit 120 anzeigt.

Das andere leere Projekt schaue ich mir heute Abend mal an.


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