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/)
-   -   Delphi Progressbar flackert unter Vista (https://www.delphipraxis.net/115766-progressbar-flackert-unter-vista.html)

delphi_user14 17. Jun 2008 18:15


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:
progressbar1.doublebuffered := True;
versucht, doch es funktioniert dann noch weniger. Sie bleibt einfach stehen.

Kann mir jemand helfen?

lbccaleb 17. Jun 2008 18:16

Re: Progressbar flackert unter Vista
 
hast es mal mit doublebuffered der hauptform versucht??

delphi_user14 17. Jun 2008 18:24

Re: Progressbar flackert unter Vista
 
funkt auch nicht :wall:

Die Muhkuh 17. Jun 2008 18:54

Re: Progressbar flackert unter Vista
 
Komponente evtl. noch auf DoubleBuffered.

Wird die Komponente zufällig in einer Schleife neu gezeichnet?

DeddyH 17. Jun 2008 18:59

Re: Progressbar flackert unter Vista
 
Zitat:

Zitat von Die Muhkuh
Komponente evtl. noch auf DoubleBuffered.

Zitat:

Zitat von delphi_user14
Delphi-Quellcode:
progressbar1.doublebuffered := True;

:mrgreen:

[edit] Auf welchem Control liegt denn die Progressbar? Form, Panel, PageControl...? [/edit]

delphi_user14 17. Jun 2008 19:15

Re: Progressbar flackert unter Vista
 
Die ProgressBar liegt auf der Hauptform.

DeddyH 17. Jun 2008 19:59

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.

delphi_user14 17. Jun 2008 20:00

Re: Progressbar flackert unter Vista
 
Die Bar ist nicht mehr auf DoubleBuffered.

Die Muhkuh 17. Jun 2008 20:01

Re: Progressbar flackert unter Vista
 
Ist da eine Schleife im Spiel, die refresh oder repaint aufruft?

delphi_user14 17. Jun 2008 20:04

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;

DeddyH 17. Jun 2008 20:05

Re: Progressbar flackert unter Vista
 
Und wo setzt Du den Progress? So wird es ja wohl kaum flackern, wenn da nichts passiert.

Die Muhkuh 17. Jun 2008 20:06

Re: Progressbar flackert unter Vista
 
Die Marqueebar läuft von alleine.

DeddyH 17. Jun 2008 20:07

Re: Progressbar flackert unter Vista
 
Ach, ist das dieses Endlosdings?

Die Muhkuh 17. Jun 2008 20:11

Re: Progressbar flackert unter Vista
 
Ja

stOrM 17. Jun 2008 20:19

Re: Progressbar flackert unter Vista
 
Hi, ich hab grad das gleiche problem mit marquee kuck mal hier:

Codegear

delphi_user14 18. Jun 2008 14:55

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?

toms 18. Jun 2008 15:06

Re: Progressbar flackert unter Vista
 
Zitat:

Zitat von delphi_user14
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?

Leite eine neue Komponenete von TProgressBar ab.

delphi_user14 18. Jun 2008 15:19

Re: Progressbar flackert unter Vista
 
Wie leite ich eine Komponente ab.

Ich weiß nur, wie man eine Nicht-Visuelle Komponente schreibt.

toms 18. Jun 2008 15:26

Re: Progressbar flackert unter Vista
 
Zitat:

Zitat von delphi_user14
Wie leite ich eine Komponente ab.

Ich weiß nur, wie man eine Nicht-Visuelle Komponente schreibt.

Menü Datei - Neu - Anderes - Komponente auswählen und dem Wizard folgen.

stOrM 18. Jun 2008 15:55

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;

toms 19. Jun 2008 17:12

Re: Progressbar flackert unter Vista
 
Andere Möglichkeit.

1. Datei ProgressBarVistaFix.pas anlegen:


Delphi-Quellcode:
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.
2. In jedem Projekt, wo eine Progressbar verwendet wird, die Unit ProgressBarVistaFix in die Uses Klausel aufnehmen.

delphi_user14 19. Jun 2008 17:32

Re: Progressbar flackert unter Vista
 
Danke, ich habe jetzt eine neue Komponente geschrieben, über deren Einstellungen man auch das Marquee einstellen kann.

delphi_user14 9. Jul 2008 17:32

Re: Progressbar flackert unter Vista
 
Kann man HIER herunterladen.


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