![]() |
ProgressBar Status hin/her bewegen ???
Hi,
wie hat der Author (Martin W) das mit der ProgressBar beim Splash-Screen gemacht? ![]() Der Status bewegt sich hin und her. Würde mich mal interesieren wie das funktioniert?? Gruß Core |
Re: ProgressBar Status hin/her bewegen ???
das ist der PBS_MARQUEE style der progress bars, geht aber nur mit comctl32.dll version 6.0 (XP und spaeter). In seinem beispiel hat er wohl ein control dafuer gebastelt oder auf ein fertiges zurueckgegriffen.
|
Re: ProgressBar Status hin/her bewegen ???
war nur so ne frage sieht irgendwie witzig aus :mrgreen:
Danke, Core |
Re: ProgressBar Status hin/her bewegen ???
gibts net bei den jedis so ne progressbar :?: :gruebel:
|
Re: ProgressBar Status hin/her bewegen ???
Achja hier ist der Code, habe ihn zufällig beim stöbern gefunden.
![]()
Delphi-Quellcode:
Viele Grüße,
unit MarqueeProgressBar;
interface uses SysUtils, Windows, Classes, Controls, ComCtrls, Messages; type TMarqueeProgressBar = class(TProgressBar) private FActive: Boolean; FAnimationSpeed: Integer; procedure SetActive(const Value: Boolean); procedure SetAnimationSpeed(const Value: Integer); procedure UpdateProgressBar; protected procedure CreateParams(var Params: TCreateParams); override; public constructor Create(AOwner: TComponent); override; published property Active: Boolean read FActive write SetActive; property AnimationSpeed: Integer read FAnimationSpeed write SetAnimationSpeed; end; const PBS_MARQUEE = $08; PBM_SETMARQUEE = WM_USER + 10; procedure Register; implementation procedure Register; begin RegisterComponents('SwissDelphiCenter', [TMarqueeProgressBar]); end; constructor TMarqueeProgressBar.Create(AOwner: TComponent); begin inherited; FAnimationSpeed := 60; end; procedure TMarqueeProgressBar.CreateParams(var Params: TCreateParams); begin inherited; Params.Style := Params.Style or PBS_MARQUEE; end; procedure TMarqueeProgressBar.SetActive(const Value: Boolean); begin FActive := Value; UpdateProgressBar; end; procedure TMarqueeProgressBar.SetAnimationSpeed(const Value: Integer); begin FAnimationSpeed := Value; UpdateProgressBar; end; procedure TMarqueeProgressBar.UpdateProgressBar; begin if FActive then SendMessage(Self.Handle, PBM_SETMARQUEE, 1, FAnimationSpeed) else SendMessage(Self.Handle, PBM_SETMARQUEE, 0, 0); end; end. CoRe.eXtreem |
Re: ProgressBar Status hin/her bewegen ???
Die Komponente benötigt zusätzlich noch das XP-Manifest im Programm, andernfalls funktioniert sie nicht.
gruss |
Re: ProgressBar Status hin/her bewegen ???
Zitat:
Das Ding heißt z.B. TJvWaitingGradient (Standardmäßig unter "Jv Bars, Panels") |
Re: ProgressBar Status hin/her bewegen ???
Wenn ich mich richtig erinnere, aber nicht im XP-Stil.
gruss |
Re: ProgressBar Status hin/her bewegen ???
?? irgendwie bin ich nicht fähig, die Komponente zu registrieren... ich muss doch eigentlich die Source in eine *.pas File schreiben und dann bei (Delphi 7) oben im Menü nur auf "Komponente installieren...", *.pas File auswählen und die dcl neu kompilieren...
da stürtzt mir aber Delphi mit einer Zugriffsverletzung ab... stimmt was an der Source nicht (finde dann aber den Fehler nicht) oder mache ich was falsch?? Andere Komponenten aus pas-Files kompilieren allerdings einwandfrei. schöne Grüße, Christian |
Re: ProgressBar Status hin/her bewegen ???
Was meinst du mit "in eine *.pas-file schreiben" ?
Obiger Code ist die komplette *pas-file. Welches OS hast du ? gruss |
Re: ProgressBar Status hin/her bewegen ???
Zitat:
Kann man aber versuchen durch die Farbwahl etc. zu simulieren :) |
Re: ProgressBar Status hin/her bewegen ???
Also irgendwie bekomme ich das auch nicht gebacken!
Habe den Code in Unit2.pas geschrieben. Benutze es aus Unit1
Delphi-Quellcode:
Active und AnimationSpeed funktionieren nicht anzusprechen.
procedure TForm1.FormShow(Sender: TObject);
var MProgressBar: TProgressBar; begin MProgressBar:=Unit2.TMarqueeProgressBar.Create(Self); with MProgressBar do begin Parent:=Form1; Name:='MProgressBar'; Left:=100; Top:=100; end; end;
Delphi-Quellcode:
Irgendwas mache ich falsch.
published
property Active: Boolean read FActive write SetActive; property AnimationSpeed: Integer read FAnimationSpeed write SetAnimationSpeed; Gruß, Core |
Re: ProgressBar Status hin/her bewegen ???
Zitat:
Allerdings stürtzt mir Delphi beim Kompilieren mit einer Zugriffsverletzung an Adresse (die hab ich jetzt nicht parat) ab. Woran kann das liegen?? Falls es von Belang ist: ich nutze WindowsXP Pro SP2 und Delphi 7 Pro @CoRe.eXtreem: du hast ja auch nicht versucht sie als Komponente einzutragen, sondern versucht direkt aus dem Code eine neue ProgressBar abzuleiten, was ja auch funktionieren müsste... :D |
Re: ProgressBar Status hin/her bewegen ???
MProgressBar sollte auch vom Typ TMarqueeProgressBar sein :wink:
|
Re: ProgressBar Status hin/her bewegen ???
Delphi-Quellcode:
Gut soweit funktioniert es schonmal.
procedure TForm1.FormShow(Sender: TObject);
var MProgressBar: TMarqueeProgressBar; begin MProgressBar:=Unit2.TMarqueeProgressBar.Create(Self); with MProgressBar do begin Parent:=Form1; Name:='MProgressBar'; Left:=100; Top:=100; end; end; Die ProgressBar ist erstellt und die 4 Balken zeigt es auch schon an. Sie können sich aber noch nicht bewegen da Activat sich nicht ansteuern lässt. @christian.noeding machst du nicht irgendetwas falsch. Man kann das doch nicht zu den Komponenten hinzufügen. gruß, Core /// Edit: Es funktioniert!! THX
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
var MProgressBar: TMarqueeProgressBar; begin MProgressBar:=Unit2.TMarqueeProgressBar.Create(Self); with MProgressBar do begin Parent:=Form1; Name:='MProgressBar'; Left:=100; Top:=100; Active:=true; end; end; |
Re: ProgressBar Status hin/her bewegen ???
natürlich kann man das zu den komponenten hinzufügen, dafür ist es eigentlich gedacht.
(siehe procedure register) gruss |
Re: ProgressBar Status hin/her bewegen ???
Gut zu wissen habe mich sowieso schon gefragt wozu "procedure register" da ist.
Schönen Abend und noch mal besten Dank @MrKnogge, CoRe.eXtreem |
Re: ProgressBar Status hin/her bewegen ???
ömm, ja und wo liegt mein Fehler? DElphi kommt doch mit irgendwas aus der Source nicht klar? Hat denn einer von euch die Komponente richtig registrieren können?
Ich werde aber mal die Progressbar in meinem Sourcecode per Hand einfügen, dann läuft sie ja, aber sie aus der Komponentenleiste aufs Form zu ziehen ist einfacher *lach* :) wäre schön, wenn mir jemand sagen könnte, was ich falsch mache; ist der Fehler vielleicht bei einem anderen noch aufgetreten? bis denn, Christian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:37 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-2025 by Thomas Breitkreuz