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 "Aktivitätsbar" (https://www.delphipraxis.net/205167-aktivitaetsbar.html)

Mattze 7. Aug 2020 16:05

"Aktivitätsbar"
 
Hi,

nun muss ich doch fragen. Ich finde einfach nix. Aber, wahrscheinlich, kenne ich nur nicht den richtigen Namen...

Oft sieht man in Programmen eine Art Progressbar, in der der Balken (mit Schwanz) hin und her läuft, um damit Aktivität zu zeigen.
Ich suche genau so eine Komponente.
(Selber habe ich es auch versucht, aber irgendwas fehlt mir da!)

Kennt jemand sowas? Möglichst, natürlich, kostenlos und mit Source für Delphi 7 pro?

Gruß
Mattze

himitsu 7. Aug 2020 16:15

AW: "Aktivitätsbar"
 
TProgressBar.Style = pbstMarquee
Falls der Marquee-Style noch nicht in der VCL drin ist, dann ließe es sich auch direkt per WinAPI aktivieren.
https://docs.microsoft.com/en-us/win...ss-bar-control -> PBS_MARQUEE

oder (aktueller)

Delphi-Referenz durchsuchenTActivityIndicator (VCL) bzw. Delphi-Referenz durchsuchenTAniIndicator (FMX)


PS:
https://www.delphipraxis.net/204857-...ogressbar.html

Der schöne Günther 7. Aug 2020 16:19

AW: "Aktivitätsbar"
 
Mit Schwanz? 🤨

himitsu 7. Aug 2020 16:30

AW: "Aktivitätsbar"
 
Ein hässlicher VCL-Style drüber? :stupid:
Oder im Windows die System-Farben umstellen.

Kanns aber auch mit TGauge oder Dergleichen selbst machen.

QuickAndDirty 7. Aug 2020 16:42

AW: "Aktivitätsbar"
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1471365)
Mit Schwanz? 🤨

Er meint vermutlich Schweif?

himitsu 7. Aug 2020 18:40

AW: "Aktivitätsbar"
 
Ohhh, ich hatte Schwarz gelesen. :oops:

Mattze 8. Aug 2020 06:49

AW: "Aktivitätsbar"
 
Hi,

"Schwanz" war wohl nicht richtig gewählt.
"Schweif" ginge auch...
Aber, ich weiß wohl wieder mal nicht genau, wie das heißt.
Die Farbe des Laufbalkens soll einfach schwächer werden.

Bei meinem Delphi 7 finde ich für den Progressbar noch keine Style-Eigenschaft.
Ich glaube, das würde auch nicht reichen, weil der Laufbalken ja hin- und her laufen soll.

Und ich war mir sooo sicher, dass es da auch für Delphi 7 schon etwas gibt.
Bei dem, was ich geschrieben habe, läuft der Thread zwar alles ordentlich (mit "Schweif"), aber nur, wenn nicht noch etwas anderes gemacht wird.
Wenn ich, z. Bsp., mit showmessage das Prgrramm "anhalte", geht es genau, wie es soll. Fülle ich dabei meinen Treeview weiter, wird der Thread nicht ausgeführt. (Die Threadpriority auf tpHigher zu setzen, hilft auch nicht.)
Ist es vielleicht falsch, dass im Thread alles per VCL zu zeichnen?

Nun, ich spiele weiter...

Jedenfalls danke!

Gruß
Mattze

himitsu 8. Aug 2020 16:52

AW: "Aktivitätsbar"
 
z.B. ins OnCreate oder OnShow der Form

Delphi-Quellcode:
//SetWindowLong(ProgressBar1.Handle, GWL_STYLE, GetWindowLong(ProgressBar1.Handle, GWL_STYLE) or {PBS_MARQUEE}$08);
SetWindowLong(ProgressBar1.Handle, GWL_STYLE, {PBS_MARQUEE}$08);
SendMessage(ProgressBar1.Handle, {PBM_SETMARQUEE}WM_USER+10, 1, 100); // 0=steht, 1=läuft und Tempo=100
Hab alle Konstanten ersetzt. Kann sein, dass es Einige bei dir schon gibt.
Mit diesem Style-Property wird am Ende auch nur der Control-Style gesetzt und die Auto-Animation gestartet.
Wenn man die Animation nicht startet, dann wird durch ändern von .Position die "Animation" manuell um einen Schritt weitergeschaltet. (z.B.
Delphi-Quellcode:
ProgressBar1.StepIt;
)

Insgesamt gibt es noch paar weitere Dinge, welche Windows inzwischen bietet (vor allem seit Vista und 7) und die erst in späteren Delphis drin sind.
z.B. auch Farben Rot/Gelb/Grün, um einen Status wie "Pausiert" oder "Fehler" anzuzeigen.
https://docs.microsoft.com/en-us/win...ss-bar-control
https://docs.microsoft.com/en-us/win...trol-reference

PS: https://www.embarcadero.com/de/products/delphi/starter

Mattze 9. Aug 2020 14:51

AW: "Aktivitätsbar"
 
Hallo

und Stop!
Vielen Dank allen Helfern, besonders himitsu.
Ich glaubbe aber, wir sind da in eine falsche Richtung gekommen und haben das eigentliche Problem aus den Augen verloren!
Marqee und Schweif und hin- und her laufen sind NICHT das Problem. Das funktioniert sogar sehr gut.

Das Problem ist, dass der Laufbalken stehen bleibt, sobald das Programm etwas (anderes) macht. Pausiert das Programm (z. Bsp. mit Showmessage) laufen die Balken alle schön weiter.
Das betrifft meine eigene Komponente (mit Thread oder Timer. Habe beides probiert!), aber auch die "normale" Delphikomponente Progressbar (Wenn ich ihn bei Programmstart loslaufen lasse, abver auch, wenn ich das Timergesteuert mache.)
Ich habe keine Idee, warum der stehen bleibt.
Bsp.: Ich lasse ihn loslaufen (Nach dem progressbar.enable ein Showmessage). Drücke das Showmessage weg und mache etwas. Der Balken steht. mache zwischendurch ein Showmessage. Der Balken läuft wieder bis ich das auch wegdrücke... Waskann man da machen?

(Wie gesagt: Delphi 7 pro)

Gruß
Mattze

TurboMagic 9. Aug 2020 15:34

AW: "Aktivitätsbar"
 
Ok, nach deiner letzten Beschreibung ist mir so ungefähr klar was du treibst ;-)
Für viele Dinge nutzen VCL Programme sog. Windows Botschaften. Diese werden aber nur dann
innerhalb deines Programms verarbeitet, wenn dieses dazu kommt die Botschaftenschleife
abzuarbeiten.

Das macht die VCL automatisch für dich. Nur: falls du eine länger laufende Aktion ausführst,
dann kommt diese Botschaftenschleife solange nicht zum Zug und auch dein GUI wird nie
aktualisiert.

=> du müsstest versuchen deine länger laufende Tätigkeit aus dem VCL Hauptthread heraus
zun verlagern. Der Hauptthread ist der, der automatisch läuft sobald deine erste Form
angezeigt wird.

=> deine länger laufende Tätigkeit gehört z.B. in einen eigenen Thread.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:03 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