AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

"Aktivitätsbar"

Ein Thema von Mattze · begonnen am 7. Aug 2020 · letzter Beitrag vom 11. Aug 2020
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#1

AW: "Aktivitätsbar"

  Alt 7. Aug 2020, 18:40
Ohhh, ich hatte Schwarz gelesen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#2

AW: "Aktivitätsbar"

  Alt 8. Aug 2020, 06:49
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#3

AW: "Aktivitätsbar"

  Alt 8. Aug 2020, 16:52
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. 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
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 8. Aug 2020 um 17:05 Uhr)
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#4

AW: "Aktivitätsbar"

  Alt 9. Aug 2020, 14:51
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
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.038 Beiträge
 
Delphi 12 Athens
 
#5

AW: "Aktivitätsbar"

  Alt 9. Aug 2020, 15:34
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.
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#6

AW: "Aktivitätsbar"

  Alt 10. Aug 2020, 17:38
Hallo

und Au-Weiha!
Ich bin offenbar in die falsche Richtung geraten.
Da arbeite ich schon eine ganze Weile mit Threads und habe dieses "Problem" noch nie mitbekommen.
Es scheint also tatsächlich so zu sein, wie ich es in einem Post ahnte. Und ein massenhaftes Application.processmessages ist auch keine Lösung. Immer aufs Schlimme!

Da das eine ganze Menge verschiedener länger dauernde Sachen sind, kann ich die leider nicht alle in Threads auslagern. Ich glaube, da hätte ich mehr Probleme als wenn ich den Aktivitätsbalken gar nicht anzeige.

Würde es auch ordentlich angezeigt, wenn ich den Thread mit dem Aktivitätsbalken "VCL-Frei" mache?
(Ich glaube zwar nicht, dass es mir gelingen würde, aber da zurzeit keiner drängelt, könnte ich es ja mal versuchen... Ich hab's nicht so mit der Grafikprogrammierung!)

Jedenfalls: Danke!

Gruß
Mattze
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
730 Beiträge
 
Delphi 12 Athens
 
#7

AW: "Aktivitätsbar"

  Alt 11. Aug 2020, 07:13
Das Thema hatten wir hier doch kürzlich erst:
https://www.delphipraxis.net/204857-...ogressbar.html

Un ich mache so etwas hiermit:
http://www.delphifaq.com/faq/f382.shtml
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:34 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