Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   Delphi Button flimmert (https://www.delphipraxis.net/78187-button-flimmert.html)

TheMiller 30. Sep 2006 14:39


Button flimmert
 
Hallo,

für alle, die meinen vorherigen Thread nicht gelesen haben. Hab eine neue Komponente von TSpeedButton wegen dem Glyphen abgeleitet. Jetzt habe ich die Prozedur Paint überschrieben und einen Glyphen geladen. Es wird alles gemacht, doch der Button flimmert.

Hier der Code

Delphi-Quellcode:
  inherited Paint;
  Canvas.Brush.Color:=clRed;
  Canvas.Pen.Color:=clBlack;
  Canvas.MoveTo(0,0);
  Canvas.LineTo(Width, Height);
  Glyph.Width:=Width;
  Glyph.LoadFromFile('C:\test.bmp');

CK_CK 30. Sep 2006 14:50

Re: Button flimmert
 
Setz' mal die Eigenschaft doublebuffered auf True ;)

TheMiller 30. Sep 2006 14:54

Re: Button flimmert
 
Sehr gut! Das funktioniert!

Aber geht das nicht extrem auf die Performance, wenn ich diese Eigenschaft eingeschaltet habe?

CK_CK 30. Sep 2006 15:02

Re: Button flimmert
 
Die Komponente wird nur ein weiteres mal zwischengespeichert, das sollte IMHO vor allem für heutige PCs problemlos zu schaffen sein...

TheMiller 30. Sep 2006 15:07

Re: Button flimmert
 
Hm,

das Problem war, dass die Prozedur Paint immer wieder aufgerufen wird und ich somit immerwieder das Bild xyz lade. Das geht richtig auf die Performance (Notebook-Lüft geht an)...

Muss das irgendwie anders lösen

CK_CK 30. Sep 2006 15:09

Re: Button flimmert
 
Das könnte auch an deiner Prozedur liegen...

Zeig' mal ein bisschen Code bitte :-D

TheMiller 30. Sep 2006 15:15

Re: Button flimmert
 
Ok, hatte es erst so:

Delphi-Quellcode:
procedure TRollOverButton.Paint;
begin
  inherited Paint;
  Glyph.LoadFromFile('C:\test.bmp');
end;
Doch dadurch, dass Paint ja ständig ausgeführt wird, wird das Bild immer neu geladen und neu gezeichnet. Also habe ich jetzt eine Prozedur geschrieben, die mich das Bild wechseln lässt und habe diese beim Erstellen des Buttons ausgeführt.

BTW: Doch wenn ich DoubleBuffered auf True setze, dann zeichnet das Programm einen dicken grauen Rahmen um die normalen TButtons in meinem Programm...

CK_CK 30. Sep 2006 15:23

Re: Button flimmert
 
Lade das Bitmap doch in der Create-Prozedur in eine Private Variable und zeichne es in der Paint-Methode via Glyph.Assign(...);

Dann wird das Bild nur einmal geladen und muss nur gezeichnet werden...

TheMiller 30. Sep 2006 15:25

Re: Button flimmert
 
Ja, gute Idee. Kann ich machen.

Hast du noch eine Idee wegen dem DoubleBuffered-Problem?

CK_CK 30. Sep 2006 15:29

Re: Button flimmert
 
Tut mir leid, ich kann mir nichts darunter vorstellen...
Du kannst ja mal ein Screenshot machen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:32 Uhr.
Seite 1 von 2  1 2      

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