![]() |
Progressbar flackert unter Vista
Hallo!
Ich würde gern ein Programm mit MarqueeProgressbar unter Vista schreiben, doch leider flackert die Bar. Ich habe es mit
Delphi-Quellcode:
versucht, doch es funktioniert dann noch weniger. Sie bleibt einfach stehen.
progressbar1.doublebuffered := True;
Kann mir jemand helfen? |
Re: Progressbar flackert unter Vista
hast es mal mit doublebuffered der hauptform versucht??
|
Re: Progressbar flackert unter Vista
funkt auch nicht :wall:
|
Re: Progressbar flackert unter Vista
Komponente evtl. noch auf DoubleBuffered.
Wird die Komponente zufällig in einer Schleife neu gezeichnet? |
Re: Progressbar flackert unter Vista
Zitat:
Zitat:
[edit] Auf welchem Control liegt denn die Progressbar? Form, Panel, PageControl...? [/edit] |
Re: Progressbar flackert unter Vista
Die ProgressBar liegt auf der Hauptform.
|
Re: Progressbar flackert unter Vista
Wenn Du sowohl Form als auch die Bar auf DoubleBuffered gesetzt hast, weiß ich leider auch nicht weiter, ich habe auch kein Vista, um das mal auszuprobieren.
|
Re: Progressbar flackert unter Vista
Die Bar ist nicht mehr auf DoubleBuffered.
|
Re: Progressbar flackert unter Vista
Ist da eine Schleife im Spiel, die refresh oder repaint aufruft?
|
Re: Progressbar flackert unter Vista
Nein
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type TForm1 = class(TForm) ProgressBar1: TProgressBar; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; const PBS_MARQUEE = $08; PBM_SETMARQUEE = wm_user +10; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var cs: longint; begin cs := getwindowlong(progressbar1.Handle, gwl_style); setwindowlong(progressbar1.Handle, gwl_style, cs or PBS_MARQUEE); sendmessage(progressbar1.Handle, PBM_SETMARQUEE, 1, 40); form1.DoubleBuffered := true; end; |
Re: Progressbar flackert unter Vista
Und wo setzt Du den Progress? So wird es ja wohl kaum flackern, wenn da nichts passiert.
|
Re: Progressbar flackert unter Vista
Die Marqueebar läuft von alleine.
|
Re: Progressbar flackert unter Vista
Ach, ist das dieses Endlosdings?
|
Re: Progressbar flackert unter Vista
Ja
|
Re: Progressbar flackert unter Vista
|
Re: Progressbar flackert unter Vista
Das ist ein bisschen kompliziert.
Ist da gemeint, dass ich die Message WMERASEBKGND in die Unit ComCtrls unter TProgressBar einfügen soll. Muss ich in diesem Fall nicht das Packet neu installieren? |
Re: Progressbar flackert unter Vista
Zitat:
|
Re: Progressbar flackert unter Vista
Wie leite ich eine Komponente ab.
Ich weiß nur, wie man eine Nicht-Visuelle Komponente schreibt. |
Re: Progressbar flackert unter Vista
Zitat:
|
Re: Progressbar flackert unter Vista
Naja so sollte man es vielleicht nicht umbedingt machen funzt aber:
Delphi-Quellcode:
type
TMarqueeProgress = class(TProgressbar) public procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND; end; procedure TMarqueeProgress.WMEraseBkgnd(var Message: TWMEraseBkgnd); begin DefaultHandler(Message); end; |
Re: Progressbar flackert unter Vista
Andere Möglichkeit.
1. Datei ProgressBarVistaFix.pas anlegen:
Delphi-Quellcode:
2. In jedem Projekt, wo eine Progressbar verwendet wird, die Unit ProgressBarVistaFix in die Uses Klausel aufnehmen.
unit ProgressBarVistaFix;
interface uses Messages, ComCtrls; type TProgressBar = class(ComCtrls.TProgressBar) private procedure WMEraseBkgnd(var Message: TWmEraseBkgnd); message WM_ERASEBKGND; end; implementation procedure TProgressBar.WMEraseBkgnd(var Message: TWmEraseBkgnd); begin DefaultHandler(Message); end; end. |
Re: Progressbar flackert unter Vista
Danke, ich habe jetzt eine neue Komponente geschrieben, über deren Einstellungen man auch das Marquee einstellen kann.
|
Re: Progressbar flackert unter Vista
Kann man
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz