AGB  ·  Datenschutz  ·  Impressum  







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

Double Buffered Bug

Ein Thema von Blamaster · begonnen am 24. Jan 2010 · letzter Beitrag vom 1. Feb 2010
Antwort Antwort
Seite 1 von 3  1 23      
Blamaster

Registriert seit: 20. Jul 2007
230 Beiträge
 
#1

Double Buffered Bug

  Alt 24. Jan 2010, 10:12
Hi,

Delphi 7 hat einen Bug bei der Nutzung von Double Buffered. Beispielsweise Buttons oder Checkboxes werden dann mit schwarzer Umrandung angezeigt.

http://img694.imageshack.us/img694/8582/bugx.png

Daraufhin hatte jemand hier aus dem Board ein BugFix dafür geschrieben (leider ist mir der Nick entfallen), welches auch gut funktioniert.

Nun hat sich allerdings rausgestellt, dass sich das Programm durch das BigFix auf manchen Rechnern nicht starten lässt, sondern nur kurz aufblitzt und sich danach direkt wieder schließt.

Ein Zusammenhang zwischen den Os Versionen lässt sich nicht feststellen. Manchmal funktioniert es beispielsweise unter Windows Xp Home Service Pack 3 und manchmal unter dem gleiben Os nicht.

Gneuaso taucht der Fehler auch bein Win Vista und Win7 auf.

Das eingesetzte Bugfix habe ich mal angehängt.

Ich hoffe jemand kann mir helfen das Problem zu lösen.

Mfg Blamaster
Angehängte Dateien
Dateityp: pas d7doublebufferedthemefix_144.pas (9,9 KB, 14x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#2

Re: Double Buffered Bug

  Alt 24. Jan 2010, 10:29
Hast du DoubleBuffered auf den Button angewendet oder NUR auf die Form?

Wenn die Ausgabe gepuffert wird, dann wird diese erstmal in ein internes Bitmap gezeichnet und danach erst alles zusammen ausgegeben.
Nun kennt das Bitmap des "Buttons" nicht den Hintergrund, weswegen alles "Durchsichtige" natürlich Schwarz bleibt. (leeres Bitmap = schwarz)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Blamaster

Registriert seit: 20. Jul 2007
230 Beiträge
 
#3

Re: Double Buffered Bug

  Alt 24. Jan 2010, 11:14
Hi,

DoubleBuffered = true ist auf das ganze Form angewendet.

Mfg Blamaster
  Mit Zitat antworten Zitat
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#4

Re: Double Buffered Bug

  Alt 24. Jan 2010, 11:20
Hallo :
Wenn Du die Komponenten (Buttons ...) mit DoubleBuffered := True versiehst und nicht die Form,
verschwindet auch der unschöne Randeffekt:

Delphi-Quellcode:
Form1.DoubleBuffered := False;
Button1.DoubleBuffered := True;
Markus H.
  Mit Zitat antworten Zitat
Blamaster

Registriert seit: 20. Jul 2007
230 Beiträge
 
#5

Re: Double Buffered Bug

  Alt 24. Jan 2010, 11:42
Hi,

das Problem ist eiegntlich das ich eine Paintbox habe auf die recht schnell geszeichnet wird und ohne das DoubleBuffered = true fängt die an zu flackern.

Gibt es da eine andere lösung als das ganze Form auf DoubleBuffered = true zu setzen ?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#6

Re: Double Buffered Bug

  Alt 24. Jan 2010, 11:46
Puffere selber:
Zeichne in ein Bitmap
und kopiere dieses Bitmap dann auf die Paintbox.

hat auch noch 'nen anderen Vorteil:
Wenn du das Bitmap auch nochmal in OnPaint der PaintBox kopierst, wird das Bild nachdem es verdeckt wurde, wiederhergestellt, ohne daß du alles nochmal dort zeichnen mußt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Blamaster

Registriert seit: 20. Jul 2007
230 Beiträge
 
#7

Re: Double Buffered Bug

  Alt 24. Jan 2010, 13:11
Hi,

nichts großartig anderes mache ich aber bereits:

PB.Canvas.StretchDraw(Rect(0, 0, PB.Width, PB.Height), _WavePicture.Graphic); Lädt das _WavePicture.Graphic Bild in die Paintbox.

In einem Timer steht noch ein PB.Refresh.

Trotzdem flackert ohne das DoubleBuffered = true das Bild.
  Mit Zitat antworten Zitat
Blamaster

Registriert seit: 20. Jul 2007
230 Beiträge
 
#8

Re: Double Buffered Bug

  Alt 24. Jan 2010, 18:53
Keiner mehr eine Idee ?

Mfg Blamaster
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Double Buffered Bug

  Alt 24. Jan 2010, 18:56
Warum ein Timer? Du bekommst doch eine Nachricht, wenn es neu gezeichnet werden muss. Les mal hier: http://www.michael-puff.de/Artikel/W...tioniert.shtml und bitte bis ganz zu ende lesen. Und hier noch mal für lese Faule: http://www.michael-puff.de/Developer...enBitmap.shtml
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Blamaster

Registriert seit: 20. Jul 2007
230 Beiträge
 
#10

Re: Double Buffered Bug

  Alt 28. Jan 2010, 15:49
Hi,

der Timer dazu um sich ändernde Daten auf die PaintBox zu zeichnen.

Der vorgang sieht also momentan so aus.

1. Timer löst Onpaint Ereignis der Paintbox auf, diese holt sich die Hintergrund Bmp und lädt sie, nun werden noch ein paar sachen auf die PaintBox mit dem bmp hintergrund gezeichnet.

Mit dem dobulebuffered Theme Fix geht es ja ansich auch ganz gut, nur ebend nicht auf allen Systemen. Kann man anhand der angehängten Datei erkennen wieso das programm auf manchen System sirekt nach dem start ohne Fehlermeldung wieder schließt ?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 09:16 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