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/)
-   -   VCL Controls Erscheinungsbild bei per Monitor V2 (https://www.delphipraxis.net/207884-vcl-controls-erscheinungsbild-bei-per-monitor-v2.html)

THonscha 12. Mai 2021 06:49

VCL Controls Erscheinungsbild bei per Monitor V2
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn ich in meinen Programmen im Manifest die Option per Monitor V2 aktiviere, erscheinen die VCL Controls (z.B. DBNavigator, siehe Bildanhang) unter Windows 7, wie ausgegraut. Unter Windows 10 ist alles in Ordnung. Wie kann ich das Problem umgehen?

Der schöne Günther 12. Mai 2021 07:03

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Kannst du sicherheitshalber mal das gesamte Manifest posten?

user69 12. Mai 2021 07:12

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Ich denk das ist ein Bug in VCL.Buttons.pas (in D10.4.1/2).
This change in VCL.Buttons.pas should fix that.

// LStyle.DrawText(DC, FThemeDetails, Text, TextRect, LFormats, LOptions); //according RSP-30755 (minor subfix) - fix Bitbtn and SpeedButton background color error in win7
LStyle.DrawText(DC, FThemeDetails, Text, TextRect, LFormats, LColor); //according RSP-30755 (minor subfix) - fix Bitbtn and SpeedButton background color error in win7

THonscha 12. Mai 2021 07:14

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Zitat:

Zitat von user69 (Beitrag 1489233)
Ich denk das ist ein Bug in VCL.Buttons.pas (in D10.4.1/2).
This change in VCL.Buttons.pas should fix that.

// LStyle.DrawText(DC, FThemeDetails, Text, TextRect, LFormats, LOptions); //according RSP-30755 (minor subfix) - fix Bitbtn and SpeedButton background color error in win7
LStyle.DrawText(DC, FThemeDetails, Text, TextRect, LFormats, LColor); //according RSP-30755 (minor subfix) - fix Bitbtn and SpeedButton background color error in win7


Das hört sich doch gut an - teste ich nachher ;)

THonscha 12. Mai 2021 08:17

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Leider ist der Fehler damit nicht behoben. Ich benutze übrigens die Version 10.4.3.
Der Fehler ist aber sicherlich mit dem obigen Fix verbunden...

Uwe Raabe 12. Mai 2021 08:47

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Zitat:

Zitat von thonscha (Beitrag 1489235)
ich benutze übrigens die version 10.4.3.

10.4.3 :?

THonscha 12. Mai 2021 09:52

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
sorry vertippt 10.4 Update 2 natürlich also 1.4.2

user69 12. Mai 2021 10:24

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Stell doch mal ein demo prog hier ein.

THonscha 12. Mai 2021 11:52

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Zitat:

Zitat von user69 (Beitrag 1489253)
Stell doch mal ein demo prog hier ein.

Geht ja schlecht braucht ja Daten um den DBNavigator zu enablen ...

himitsu 12. Mai 2021 12:01

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
TClientDataSet oder sonst irgendein Memory-DataSet, mit 2-3 Datensätzen voll Dummydaten, in mindestens "einer" Spalte/Field. :angle:

THonscha 12. Mai 2021 15:04

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ok, im Anhang ist die Testdatei...
Unter Win10 alles ok
Unter Win7 Bug!

user69 12. Mai 2021 15:16

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Wie bekomm ichs unter Win7 zum laufen? Ich bekomm erst mal den Fehler: Error loading Midas.dll (und dann sind alle Buttons disabled)

Da ich bisher nicht mit Datenbanken gearbeitet hab weiß ich nicht, wie ich das fixe.

himitsu 12. Mai 2021 15:29

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Alles, was mit dem ururururalten MIDAS zu tun hat, aus dem Programm rauswerfen. (leider ist das ClientDataSet bissl alt)

Die Midas.dll mitgeben, oder es über die MidasLib.pas einkompilieren.


Und am Besten gleich das tote Windows 7 mit wegwerfen.

KodeZwerg 12. Mai 2021 15:34

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Zitat:

Zitat von himitsu (Beitrag 1489317)
Und am Besten gleich das tote Windows 7 mit wegwerfen.

Dem stimme ich zu.

THonscha 12. Mai 2021 15:35

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Zitat:

Zitat von KodeZwerg (Beitrag 1489318)
Zitat:

Zitat von himitsu (Beitrag 1489317)
Und am Besten gleich das tote Windows 7 mit wegwerfen.

Dem stimme ich zu.

Hilft mir leider nicht bei Kunden, die Windows 7 einsetzen.

KodeZwerg 12. Mai 2021 15:38

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Dafür ist ja mein Link da (Kunden zeigen das es mehr als veraltet ist und kein Support mehr angeboten wird)

himitsu 12. Mai 2021 15:44

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Wenn dein Programm kein Win7 mehr unterstützt, dann müssen sie halt eben upgraden. (OK, oder sie bezahlen für eigentlich unnötige abwärtskompatibilitäten)
* hatten ja immerHIN schon 6 Jahre Zeit dafür
* und offiziell, laut Hersteller, ist Windows 7 seit nun fast 1,5 Jahren ausgestorben (*1)



1) Neue Dinge hatte ich mit aktuellen Funktionen implementiert.
Wenn das in Windows 7 nicht lief, dann hab ich auch nicht explizit dafür den Code geändert. (also einige neuere Module waren dann einfach nicht nutzbar, oder die Arbeitzzeit muß eben gezahlt werden)
Und die Einstellung des Supports, hat bei uns auch den letzten Kunden dazu gebracht, seine PCs upzugraden.

OK, abgesehn alten Industrie-PC mit Windows 7-Embedded, wo aber nur ein altes Modul verwendet wird. (wird eh nur als Test-System genutzt und die 3000€ für eine neue Version wird nicht finanziert werden)

THonscha 12. Mai 2021 15:54

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Ok, würde mich freuen, wenn wir zurück zur Frage kommen. Das verwässert immer ein wenig die Fehlersuche.
Abhilfe bringt ja schon, wenn ich im Manifest die per Monitor V2 Option deaktiviere. Aber das sollte auch eleganter gehen.

user69 12. Mai 2021 17:06

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Hab den fix nun mit deinem Programm getestet.

Er funktioniert!
Ohne siehts aus, wie disabled, mit ist wie enabled.

Du must die VCL.Buttons.pas in dein Verzeichnis kopieren und dort ändern (ggf. Delphi nach dem kopieren neu starten).

himitsu 12. Mai 2021 17:31

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Zitat:

Zitat von user69 (Beitrag 1489233)
Ich denk das ist ein Bug in VCL.Buttons.pas (in D10.4.1/2).
This change in VCL.Buttons.pas should fix that.

// LStyle.DrawText(DC, FThemeDetails, Text, TextRect, LFormats, LOptions); //according RSP-30755 (minor subfix) - fix Bitbtn and SpeedButton background color error in win7
LStyle.DrawText(DC, FThemeDetails, Text, TextRect, LFormats, LColor); //according RSP-30755 (minor subfix) - fix Bitbtn and SpeedButton background color error in win7

Hier der genaue/komplette Grund für die unterschieldiche Darstellung:
Delphi-Quellcode:
    if CheckPerMonitorV2SupportForWindow(Handle) then
      PPI := FCurrentPPI
    else
      PPI := 0;

    LStyle.DrawElement(Canvas.Handle, Details, R, nil, PPI);


Aber der eigentliche Grund ist natürlich, das DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 erst mit Windows 10 erfunden wurde und Windows 7 das nicht kennen kann.

Lösung: Wenn Programm in Windows < 10 ausgeführt, dann kein PerMonitorV2 verwenden

THonscha 12. Mai 2021 20:53

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Zitat:

Zitat von himitsu (Beitrag 1489334)
Zitat:

Zitat von user69 (Beitrag 1489233)
Ich denk das ist ein Bug in VCL.Buttons.pas (in D10.4.1/2).
This change in VCL.Buttons.pas should fix that.

// LStyle.DrawText(DC, FThemeDetails, Text, TextRect, LFormats, LOptions); //according RSP-30755 (minor subfix) - fix Bitbtn and SpeedButton background color error in win7
LStyle.DrawText(DC, FThemeDetails, Text, TextRect, LFormats, LColor); //according RSP-30755 (minor subfix) - fix Bitbtn and SpeedButton background color error in win7

Hier der genaue/komplette Grund für die unterschieldiche Darstellung:
Delphi-Quellcode:
    if CheckPerMonitorV2SupportForWindow(Handle) then
      PPI := FCurrentPPI
    else
      PPI := 0;

    LStyle.DrawElement(Canvas.Handle, Details, R, nil, PPI);



Aber der eigentliche Grund ist natürlich, das DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 erst mit Windows 10 erfunden wurde und Windows 7 das nicht kennen kann.

Lösung: Wenn Programm in Windows < 10 ausgeführt, dann kein PerMonitorV2 verwenden

Danke Dir - werde ich morgen einbauen!

TurboMagic 12. Mai 2021 22:12

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Zitat:

Zitat von himitsu (Beitrag 1489334)
Hier der genaue/komplette Grund für die unterschieldiche Darstellung:
Delphi-Quellcode:
    if CheckPerMonitorV2SupportForWindow(Handle) then
      PPI := FCurrentPPI
    else
      PPI := 0;

    LStyle.DrawElement(Canvas.Handle, Details, R, nil, PPI);


Aber der eigentliche Grund ist natürlich, das DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 erst mit Windows 10 erfunden wurde und Windows 7 das nicht kennen kann.

Lösung: Wenn Programm in Windows < 10 ausgeführt, dann kein PerMonitorV2 verwenden

Ist das ein Bug in Delphi?
Falls ja, ist der schon gemeldet?
Falls nein, könnte den jemand der sich besser damit auskenn als ich melden?

Grüße
TurboMagic

himitsu 12. Mai 2021 22:54

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Das ist an 2 Stellen so eingebaut.
Denke mal jemand hat sich etwas dabei gedacht, als diese Komponente so kunterbunt umgebaut wurde. :angle2:

Nja, aber ich vermute einfach Mal, dass es nicht mehr mit Windows 7 getestet wurde.

TurboMagic 13. Mai 2021 09:01

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Ist das nun ein Bug in der VCL oder nicht?

himitsu 13. Mai 2021 10:40

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Wenn du das meldest, geht der Status bestimmt auf "das ist halt so" :roll:

Der Bug "geht halt nicht", in aktuelle lebenden Windowsen, ist ja nicht existent. :wink:

THonscha 22. Mai 2021 08:28

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Jetzt weiß ich, warum der Patch bei mir nicht läuft ;) Ich habe die VCL nicht neu kompiliert... geht das irgendwie einfach?

Uwe Raabe 22. Mai 2021 09:00

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von THonscha (Beitrag 1489934)
Ich habe die VCL nicht neu kompiliert

Man compiliert nicht einfach die VCL!

THonscha 22. Mai 2021 13:25

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1489935)
Zitat:

Zitat von THonscha (Beitrag 1489934)
Ich habe die VCL nicht neu kompiliert

Man compiliert nicht einfach die VCL!

Ok - habe die geänderte Datei in das Verzeichnis meines Programmes geschoben und nun funktioniert auch der Patch und löst das Problem.

Vielleicht wird der Fehler ja in einer der nächsten Versionen behoben. Ich habe zumindest den Bug gemeldet.

Codehunter 23. Mai 2021 17:58

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Ich möchte nur noch ergänzen, dass der Windows-7-Support per ESU erst am 23.10.2023 bzw. 14.10.2024 endet. Erst danach ist es wirlich ganz ganz tot. Trotzdem solltest du dir den Aufwand, für Win 7 zu testen gut bezahlen lassen.

THonscha 24. Mai 2021 21:00

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Das ist richtig ... aus diesem Grunde sollte ein Programm auch noch auf WIN 7 laufen.

himitsu 24. Mai 2021 21:48

AW: VCL Controls Erscheinungsbild bei per Monitor V2
 
Wie gesagt, wenn "DU" beim Start erkennst, dass das Programm auf einem alten Windows (z.B. 7) läuft,
dann die Einstellung/Property ändern und etwas verwenden, wass dort noch funktioniert.


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