AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Windows 11 - DoubleBuffered Problem

Ein Thema von user69 · begonnen am 25. Okt 2021 · letzter Beitrag vom 22. Nov 2022
Antwort Antwort
Seite 2 von 4     12 34      
user69

Registriert seit: 11. Dez 2004
114 Beiträge
 
#11

AW: Windows 11 - DoubleBuffered Problem

  Alt 26. Okt 2021, 17:17
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.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Windows 11 - DoubleBuffered Problem

  Alt 26. Okt 2021, 17:29
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.

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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
user69

Registriert seit: 11. Dez 2004
114 Beiträge
 
#13

AW: Windows 11 - DoubleBuffered Problem

  Alt 26. Okt 2021, 20:44
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.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#14

AW: Windows 11 - DoubleBuffered Problem

  Alt 26. Okt 2021, 20:55
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.
  Mit Zitat antworten Zitat
user69

Registriert seit: 11. Dez 2004
114 Beiträge
 
#15

AW: Windows 11 - DoubleBuffered Problem

  Alt 26. Okt 2021, 21:05
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).
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Windows 11 - DoubleBuffered Problem

  Alt 26. Okt 2021, 21:15
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.

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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Windows 11 - DoubleBuffered Problem

  Alt 26. Okt 2021, 21:22
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#18

AW: Windows 11 - DoubleBuffered Problem

  Alt 26. Okt 2021, 21:32
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.
Ich denke es ist einfach noch viel zu früh um umzusteigen.
Aber jedem das seine.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: Windows 11 - DoubleBuffered Problem

  Alt 27. Okt 2021, 06:24
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
user69

Registriert seit: 11. Dez 2004
114 Beiträge
 
#20

AW: Windows 11 - DoubleBuffered Problem

  Alt 27. Okt 2021, 08:19
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:22 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