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/)
-   -   Windows 11 - DoubleBuffered Problem (https://www.delphipraxis.net/209098-windows-11-doublebuffered-problem.html)

user69 25. Okt 2021 16:48

Windows 11 - DoubleBuffered Problem
 
Liste der Anhänge anzeigen (Anzahl: 1)
Windows 11 zeigt bei mir einige DoubleBuffered zeichnen Probleme: Insbesondere bei einer TComboBox und TEdit (siehe Demo source) anbei. Das ist auch schon im Form Designer so sichtbar. Auch beim MouseHover verändert sich was. Ich nutze D10.4.2.
Wenn ich DoubleBuffered der Form abschalte ist es ok (BTW: In jedem anderen Windows übrigens sowieso). Ähnlich verhält es sich wenn die TComboBox und TEdit in einer Groupbox sitzen - auch dort muss DoubleBuffered aus sein, damit die Elemente normal gezeichnet werden.

Nun will ich aber DoubleBuffered behalten um Flackern zu vermindern.

Kennt jemand das Problem (oder eine Lösung)?
Kann man da hoffen das Windows 11 das behebt - ich denk das hätte doch schon längst das aufallen müssen und fürchte man will das so.

venice2 25. Okt 2021 16:53

AW: Windows 11 - DoubleBuffered Problem
 
Unter D11 Flackert nichts Doublebuffer überall an.
Es gibt auch kein Zeichnungs Problem.

himitsu 25. Okt 2021 17:06

AW: Windows 11 - DoubleBuffered Problem
 
Hier auch nicht.

Da DevExpress ja zwangsweise bei fast allen Forms bescheuterter Weise das aktiviert ... aber zumindestens sah ich noch keine Probleme.

user69 25. Okt 2021 17:35

AW: Windows 11 - DoubleBuffered Problem
 
Liste der Anhänge anzeigen (Anzahl: 3)
Ich war wohl nicht korrekt genug in der Beschreibung. Es geht nicht ums flackern, sondern das Zeichen der TCombobox und des TEdit. Die sehen bei DoubleBuffered einfach mies aus.
Anbei 2 Screenshots - Wrong und OK

Anbei auch die Exe, wo ihr das hoffentlich selbst seht.

venice2 25. Okt 2021 17:41

AW: Windows 11 - DoubleBuffered Problem
 
Wie schon gesagt
Ich denke du hast ein anderes Problem deine EXE (deineExe.png) aus dem Archiv Issue.zip zeigt keine Auffälligkeiten.
Grafiktreiber oder sonstiges Problem?.

user69 25. Okt 2021 18:06

AW: Windows 11 - DoubleBuffered Problem
 
Bist du in Windows 11 (nicht Delphi 11)?

venice2 25. Okt 2021 19:00

AW: Windows 11 - DoubleBuffered Problem
 
Zitat:

Zitat von user69 (Beitrag 1496598)
Bist du in Windows 11 (nicht Delphi 11)?

Nö Windows 10 und D11
Ach du meinst in Windows 11 nö hab ich nicht. Zu früh!
Sorry Windows 11 habe ich überlesen . Mein Fehler.

Müssen dann andere testen.
Ich würde trotzdem mal versuchen einen Grafiktreiber kompatibel zu Win11 zu installieren.
Nvidia hat da einen soweit mir bekannt ist.

OK lösche die Anhänge dann wieder.

user69 25. Okt 2021 19:48

AW: Windows 11 - DoubleBuffered Problem
 
Grafiktreiber sind unwahrscheinlich.
Ich seh es auf 2 total verschiedenen Computern: Einer VM und einen nagelneuen PC mit Windows 11 ausgeliefert.

Der schöne Günther 26. Okt 2021 07:27

AW: Windows 11 - DoubleBuffered Problem
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von user69 (Beitrag 1496594)
Anbei auch die Exe, wo ihr das hoffentlich selbst seht.

Ich hätte das ja gerne für dich ausprobiert, aber bei so etwas wird mir dann doch etwas mulmig:

jaenicke 26. Okt 2021 08:59

AW: Windows 11 - DoubleBuffered Problem
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1496613)
Ich hätte das ja gerne für dich ausprobiert, aber bei so etwas wird mir dann doch etwas mulmig:

Das ist ja nur der Windows Defender. Dessen Ergebnisse nehme ich eher weniger Ernst. ;-)

Ein manueller kurzer Blick in die Exe zeigt meiner Meinung nach keine Auffälligkeiten.

Ich habe leider aktuell keine Zeit für einen Test unter Windows 11. Ich schaue einmal, ob ich heute Abend dazu komme.

user69 26. Okt 2021 16:17

AW: Windows 11 - DoubleBuffered Problem
 
Ich hatte ursprünglich deshalb auch den source code angehängt. Das ist einfach sicherer, aber dann müsst ihr es halt selbst kompilieren - da reicht auch Win10 dazu. Nur die exe muss dann in Win 11 laufen.

Dass Delphi Programme öfter von Virenscannern falsch erkannt werden nerft halt. Ich hätte die exe vielleicht signieren sollen, das hilft wohl schon einiges.

jaenicke 26. Okt 2021 16:29

AW: Windows 11 - DoubleBuffered Problem
 
So funktioniert es erst einmal als Test:
Delphi-Quellcode:
  TComboBox = class(Vcl.StdCtrls.TComboBox)
    procedure WMEraseBkgnd(var Message: TWmEraseBkgnd); message WM_ERASEBKGND;
  end;

  T... = class(TForm)
  ...
  end;

...

procedure TComboBox.WMEraseBkgnd(var Message: TWmEraseBkgnd);
begin
  FillRect(Message.DC, ClientRect, Brush.Handle);
  inherited;
end;
Schön ist das aber nicht. Erklären kann ich den Effekt aktuell nicht. Aus irgend einem Grund landet der Inhalt des einen Controls auf der Zeichenfläche des anderen...
Ich vermute, dass das daran liegt, dass Microsoft selbst das Neuzeichnen optimieren wollte. Ich habe aber aktuell nicht die Zeit das genauer zu prüfen.

Diese Änderung könnte man natürlich durch Umbiegen der VMT auch auf alle Comboboxen anwenden usw.

Zitat:

Zitat von user69 (Beitrag 1496641)
Dass Delphi Programme öfter von Virenscannern falsch erkannt werden nerft halt.

So allgemein stimmt das ja nicht einmal. Es sind immer wieder die gleichen Virenscanner, die leider aber relativ weit verbreitet sind. Das sind aber nur 4-5, die das so oft betrifft.

user69 26. Okt 2021 19:44

AW: Windows 11 - DoubleBuffered Problem
 
Vielen Dank @jaenicke. Das hilft bei der TCombobox super, das Problem ist weg.

Beim TEdit bleibt aber das Problem (schwarzer Trauerrand). Da hilft WMEraseBkgnd nicht. Das scheint an was anderen zu liegen, das dabei nicht geht.

venice2 26. Okt 2021 19:55

AW: Windows 11 - DoubleBuffered Problem
 
Zitat:

Zitat von user69 (Beitrag 1496650)
Vielen Dank @jaenicke. Das hilft bei der TCombobox super, das Problem ist weg.

Beim TEdit bleibt aber das Problem (schwarzer Trauerrand). Da hilft WMEraseBkgnd nicht. Das scheint an was anderen zu liegen, das dabei nicht geht.

Ich sehe keinen sinn in solchen Hacks.

Es ist die Sache der Entwickler von Delphi das Problem zu lösen.
Würde mich mal interessieren ob das auch mit älteren Delphi Versionen so ausschaut. D2010 zum Beispiel.
Falls ja dann ist eine ein Win11 Problem wenn nicht eins von Delphi.

btw. Was machst du wenn du 20 Comboboxen hast?
Überall WM_ERASEBKGND überschreiben? Na dann viel spaß dabei.
Traurig was hier so abgeht.

user69 26. Okt 2021 20:05

AW: Windows 11 - DoubleBuffered Problem
 
Also mit der Interposer class (wie beschrieben) muss es nur einmal eingefügt werden, es gilt dann für alle TComboboxen in dieser unit.

Und den Schuldigen zu suchen hilft mir einfach nicht weiter - ich muss es lösen (oder hoffen dass es sich von "alleine" behebt, aber das ist eher nicht hilfreich).

jaenicke 26. Okt 2021 20:15

AW: Windows 11 - DoubleBuffered Problem
 
Zitat:

Zitat von venice2 (Beitrag 1496651)
Es ist die Sache der Entwickler von Delphi das Problem zu lösen.
Würde mich mal interessieren ob das auch mit älteren Delphi Versionen so ausschaut. D2010 zum Beispiel.
Falls ja dann ist eine ein Win11 Problem wenn nicht eins von Delphi.

Ja, es betrifft alle Delphiversionen mindestens ab Version 7.

Aber die Ursache liegt an der Konstruktion der DoubleBuffered Eigenschaft. Denn ohne das klappt ja alles und das Problem gibt es soweit ich bisher gelesen habe auch nur mit Anwendungen, die in Delphi (und C++ Builder?) geschrieben wurden.

Und in anderen Anwendungen aus anderen Entwicklungsumgebungen flackert es nun weniger, sieht aber vollkommen korrekt aus. Von daher liegt es zwar an einer Änderung in Windows, aber die Ursache ist, dass Delphi um das Flackern zu reduzieren zu Tricks greift was die Behandlung der Windows Messages z.B. zum Überschreiben des Hintergrunds angeht.

Deshalb bin ich echt gespannt wie es hier weitergeht. Microsoft hat ja angekündigt, dass alle Anwendungen aus Windows 10 kompatibel sein sollen und sie sich darum kümmern wollen.

Zitat:

Zitat von venice2 (Beitrag 1496651)
btw. Was machst du wenn du 20 Comboboxen hast?
Überall WM_ERASEBKGND überschreiben?

Ich glaube du hast dir den Quelltext nicht richtig angeschaut. Erstens gilt das für das ganze Formular und zweitens musst du wie ich auch geschrieben habe nur die Methode in der VMT der Klasse TComboBox einmal (!) für die ganze Anwendung überschreiben.

jaenicke 26. Okt 2021 20:22

AW: Windows 11 - DoubleBuffered Problem
 
Zitat:

Zitat von user69 (Beitrag 1496650)
Beim TEdit bleibt aber das Problem (schwarzer Trauerrand). Da hilft WMEraseBkgnd nicht. Das scheint an was anderen zu liegen, das dabei nicht geht.

Das liegt am DoubleBuffered des Formulars. Wenn du dort auch das WM_ERASEBKGND überschreibst, klappt es.

Allerdings ist die Frage wozu du das DoubleBuffered benötigst, denn letztlich hebelst du das damit natürlich auch aus.

venice2 26. Okt 2021 20:32

AW: Windows 11 - DoubleBuffered Problem
 
Zitat:

Deshalb bin ich echt gespannt wie es hier weitergeht. Microsoft hat ja angekündigt, dass alle Anwendungen aus Windows 10 kompatibel sein sollen und sie sich darum kümmern wollen.
Da kann man nur hoffen. :lol:
Ich denke es ist einfach noch viel zu früh um umzusteigen.
Aber jedem das seine.

jaenicke 27. Okt 2021 05:24

AW: Windows 11 - DoubleBuffered Problem
 
Zitat:

Zitat von venice2 (Beitrag 1496656)
Ich denke es ist einfach noch viel zu früh um umzusteigen.
Aber jedem das seine.

Es ist immer besser, wenn man selbst Probleme zuerst bemerkt und nicht die Kunden, wenn diese früher umsteigen. Von daher stellt sich mir die Frage als Softwareentwickler gar nicht.

Und die Probleme, die ich selbst mit Windows 11 habe, waren mir ohnehin vorher schon klar, werden sich aber auch nicht ändern, weil Microsoft das halt anders sieht (Startmenü und Taskleiste aller Funktionen beraubt, ...). (Bzw. weil bei dem eigentlich mit Kacheln usw. gut gemachten und anpassbaren Startmenü zu viele gemeckert haben, weil die vielen zu intelligent und funktionell waren, darum wurde es halt nun auf dumm getrimmt.)

Aber rein technisch funktioniert hier alles. Auf das Problem mit DoubleBuffered bin ich ja nur hier im Forum aufmerksam geworden, selbst habe ich keine Probleme bisher.

user69 27. Okt 2021 07:19

AW: Windows 11 - DoubleBuffered Problem
 
Ich sehe das auch aus Kundensicht: Ich weiß nicht wer wann umsteigt. Ich arbeite auch noch nicht mit Windows 11 (und finde es auch nicht schöner als Win10, aber das ist meine persönliche Meinung).

Für die beschriebenen Probleme gibt es halt (schlechte) Workarounds und/oder ein hoffen auf Microsoft (aber bekommen die das überhaupt mal mit)?
BTW: Ein weiterer Workaround ist alles in ein Panel zu legen. Dann sind all diese Probleme weg.

jaenicke 27. Okt 2021 07:57

AW: Windows 11 - DoubleBuffered Problem
 
Zitat:

Zitat von user69 (Beitrag 1496665)
Für die beschriebenen Probleme gibt es halt (schlechte) Workarounds und/oder ein hoffen auf Microsoft (aber bekommen die das überhaupt mal mit)?

Das muss natürlich gemeldet werden. Vor allem bei Embarcadero zunächst.

Leider funktioniert mein quality-Zugang seit einem Monat nicht mehr und vom Support kommt auch keine Reaktion. Ich kann daher aktuell keine Fehler melden.

In deinem Fall würde ich aber direkt einen Supportfall aufmachen. Denn das ist ja nun wirklich ein schwerer Bug und reproduzierbar.

user69 27. Okt 2021 11:47

AW: Windows 11 - DoubleBuffered Problem
 
Ich kann das nur als Issue bei Emba im QC erstellen.
Wie macht man einen Supportfall auf?

Uwe Raabe 27. Okt 2021 12:00

AW: Windows 11 - DoubleBuffered Problem
 
Zitat:

Zitat von user69 (Beitrag 1496678)
Wie macht man einen Supportfall auf?

http://supportforms.embarcadero.com/

user69 28. Okt 2021 16:12

AW: Windows 11 - DoubleBuffered Problem
 
Naja die Antwort von Emba ist nicht sehr hilfreich:

I can reproduce the problem. Right now even Delphi 11 is not certified against Windows 11. This is planned in a future update.
I shall log a bug for the problem and get back to you with the ID.

venice2 28. Okt 2021 17:23

AW: Windows 11 - DoubleBuffered Problem
 
Zitat:

Zitat von user69 (Beitrag 1496734)
Naja die Antwort von Emba ist nicht sehr hilfreich:

I can reproduce the problem. Right now even Delphi 11 is not certified against Windows 11. This is planned in a future update.
I shall log a bug for the problem and get back to you with the ID.

Ich finde die Antwort aussagekräftig und OK.
Löst zwar jetzt nicht direkt dein Problem aber das war zu erwarten das ein 1 Monate altes System nicht direkt volle Unterstützung bekommt.
Damit muß man sich vorerst abfinden.

jaenicke 28. Okt 2021 20:40

AW: Windows 11 - DoubleBuffered Problem
 
Wichtig ist ja nur, dass Embarcadero nun direkt Kenntnis hat, sprich ein Supportmitarbeiter gesehen hat, dass das Problem existiert und insbesondere auch alte Versionen betrifft, für die es keine Fixes mehr geben wird. Denn dadurch bleibt ja nur der Weg über Microsoft zur Lösung und der wird dann hoffentlich beschritten. Das sollte das dem Mitarbeiter dort ja klar geworden sein.

RonaldK 1. Nov 2021 16:22

AW: Windows 11 - DoubleBuffered Problem
 
Zitat:

Zitat von user69 (Beitrag 1496734)
Naja die Antwort von Emba ist nicht sehr hilfreich:

I can reproduce the problem. Right now even Delphi 11 is not certified against Windows 11. This is planned in a future update.
I shall log a bug for the problem and get back to you with the ID.

Da sieht mal mal, wie wertvoll diese 3 kostenfreien Supportanfragen sind.
Ich hatte ähnlich gute Erfahrungen 8-)

Der schöne Günther 2. Nov 2021 08:04

AW: Windows 11 - DoubleBuffered Problem
 
Nur noch mal als Hinweis am Rande: Diese Fehlzeichnungen hat man genauso in anderen Anwendungen die nicht in Delphi erstellt sind. Ist also nicht fair dass Delphi selbst in die Schuhe zu schieben.

dummzeuch 2. Nov 2021 09:09

AW: Windows 11 - DoubleBuffered Problem
 
Zitat:

Zitat von RonaldK (Beitrag 1496916)
Da sieht mal mal, wie wertvoll diese 3 kostenfreien Supportanfragen sind.
Ich hatte ähnlich gute Erfahrungen 8-)

Das ist jetzt aber ziemlich unfair. War erwartest Du denn, wenn es um Betriebssystem geht, das offiziell (noch) gar nicht unterstützt wird?

jaenicke 2. Nov 2021 09:49

AW: Windows 11 - DoubleBuffered Problem
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1496927)
Nur noch mal als Hinweis am Rande: Diese Fehlzeichnungen hat man genauso in anderen Anwendungen die nicht in Delphi erstellt sind. Ist also nicht fair dass Delphi selbst in die Schuhe zu schieben.

Ich habe bisher noch keine getroffen.
In welcher Anwendung ist das denn noch der Fall?

Der schöne Günther 2. Nov 2021 10:41

AW: Windows 11 - DoubleBuffered Problem
 
z.B. uaExpert von Unified Automation

Der About-Dialog sagt:

Zitat:

Compiler:Microsoft Visual C/C++ 1500
GUI ist qt.

Da pinseln sich auch aufgeklappte ComboBoxen ständig übereinander bis man nichts mehr erkennt. Unter Windows 10 hingegen ist alles in Ordnung.

venice2 2. Nov 2021 11:54

AW: Windows 11 - DoubleBuffered Problem
 
Zitat:

Zitat von dummzeuch (Beitrag 1496931)
Zitat:

Zitat von RonaldK (Beitrag 1496916)
Da sieht mal mal, wie wertvoll diese 3 kostenfreien Supportanfragen sind.
Ich hatte ähnlich gute Erfahrungen 8-)

Das ist jetzt aber ziemlich unfair. War erwartest Du denn, wenn es um Betriebssystem geht, das offiziell (noch) gar nicht unterstützt wird?

Eigentlich spricht deine Antwort für sich selbst.
Alle die Windows 11 in Verbindung mit D11 verwenden sollten sich halt noch etwas gedulden und hier nicht rumweinen.

Ist jede Software direkt mit einem neuen Betriebssystem kompatibel?
Denke mal nicht!

D11 geht es nicht anders ist auch nur eine Software und die Entwickler brauchen Zeit um das entsprechend anzupassen. (Vorausgesetzt Windows 11 läßt es zu).
Das einzige was man vorwerfen könnte ist das die Bereitstellung von D11 einfach noch zu früh war und jetzt alle Entwickler Betatester spielen müssen.

PS:
Habt ihr mal versucht euren Doublebuffer selbst zu erstellen für die Form?
Und wie verhalten sich dann die Komponente wenn man das getan hat?

user69 2. Nov 2021 12:39

AW: Windows 11 - DoubleBuffered Problem
 
Im allgemeinen werfe ich das nicht Delphi vor, aber dem Support.
Ich hatte schon erwartet, dass man das detailliert prüft und sich dann mit Microsoft verständigt, ob das evtl. ein Windows Bug ist bzw. in Windows verbessert werden kann. Leider scheint dem aber nicht so, da nur von allgemein von fehlender Kompatibilität die Rede ist.

win568 22. Nov 2022 10:13

AW: Windows 11 - DoubleBuffered Problem
 
Application.SingleBufferingInRemoteSessions := False und es funktioniert wieder

omnibrain 22. Nov 2022 13:29

AW: Windows 11 - DoubleBuffered Problem
 
Zitat:

Zitat von win568 (Beitrag 1515176)
Application.SingleBufferingInRemoteSessions := False und es funktioniert wieder

Was mich das beim Umstieg auf Delphi 11 an Zeit gekostet hat... Plötzlich massenhaft beschwerden von Kunden dass alle möglichen Teile der Anwendung flackern.
Wie kann man nur so einen fundamentalen Change einfach komplett unter dem Radar einschieben? Über ASLR und HE-ASLR wurde wenigstens gesprochen... Ohne https://stackoverflow.com/questions/...flicker-in-rdp hätte ich noch tagelang ind er Anwendung alle Kombinationen von Doublebuffering-Settings (Am Parent, nicht am Child, am Child, nicht am Parent, mal an der FOrm, mal nicht, etc) durchgespielt und es hätte dennoch nichts gebracht...


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