AGB  ·  Datenschutz  ·  Impressum  







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

pbstMarquee richtig verwenden?

Ein Thema von stahli · begonnen am 13. Jun 2011 · letzter Beitrag vom 13. Jun 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#1

pbstMarquee richtig verwenden?

  Alt 13. Jun 2011, 14:07
Ich dachte eigentlich, ProgressBar.Style = pbstMarquee würde automatisch in einem Thread laufen und immer eine Aktivität anzeigen (solange die Progressbar sichtbar ist).
Ich wollte dies nutzen, um einen Speicherungsprozess anzuzeigen, in dem die Anwendung mal kurz "hängt" (1-2 Sec).

Der Fortschritt wird aber nur dargestellt, wenn die Anwendung Freiraum hat (Idle).
Wenn ich die Progressbar beim Speichern von Hand aktualisieren muss, wird das etwas umständlich.

Bin ich auf dem Holzweg? Wie geht es richtig?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: pbstMarquee richtig verwenden?

  Alt 13. Jun 2011, 14:10
Die garfische Aktualisierung erfolgt aber im Hauptthread. Mach es eher andersrum und lagere den Speicherungsprozess in einen Thread aus
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#3

AW: pbstMarquee richtig verwenden?

  Alt 13. Jun 2011, 14:10
Ich glaub mit der VCL muss derzeit alles GUI-mäßiges im Hauptthread geschehen, wird bei der Progressbar wahrscheinlich genauso sein.

Kannst Du eventuelle Deine Speicheroperation in einen Thread auslagern? Damit müsste es gehen.
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: pbstMarquee richtig verwenden?

  Alt 13. Jun 2011, 14:19
Das Neuzeichnen dieser Queue geschieht auch über Messages und wenn der Hauptthread hängt, dann hängen alle Messages fest und keiner zeichnet sich neu.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#5

AW: pbstMarquee richtig verwenden?

  Alt 13. Jun 2011, 17:18
Daher habe ich mir angewöhnt, alles, was nicht mit der GUI zu tun hat und längere Zeit der Berechnung/Abarbeitung benötigen könnte, in einen Thread auszulagern.

Das gleiche Problem hat man z.B. wenn du eine GIF-Animation laufen lassen willst -- über diesen Weg bin ich über das Problem gestolpert.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#6

AW: pbstMarquee richtig verwenden?

  Alt 13. Jun 2011, 17:27
Hallo...

es gab mal jemanden der hat eine Ubuntu Progressbar gemacht...
Zitat:
Copyright 2008 - 2009 bei Jonas Döbertin
Im Anhang eine Threadversion mit freundlicher Unterstützung von DeddyH.

Sollte dieses in irgend einer Weise die Regeln verletzen bitte ich um Mitteilung.

Die UbuntuProgress.pas in den Originaldateien ersetzen (ZIP)
Angehängte Dateien
Dateityp: pas UbuntuProgress.pas (19,3 KB, 18x aufgerufen)
Dateityp: zip TUbuntuProgress-1.22.zip (5,7 KB, 17x aufgerufen)

Geändert von haentschman (13. Jun 2011 um 17:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#7

AW: pbstMarquee richtig verwenden?

  Alt 13. Jun 2011, 17:29
Sollte dieses in irgend einer Weise die Regeln verletzen bitte ich um Mitteilung.
Code:
//  TUbuntuProgress
//  Version 1.2
//
//  Copyright 2008 - 2009 bei Jonas Döbertin
//  E-Mail: jonas@doebertin.de
//  Diesen Projekt ist Open-Source und wird es auch immer bleiben.
//  Jeder der möchte kann diesen Code weitergeben und verwenden wie
//  er möchte, Bedingung ist, das dieser Hinweis enthalten bleibt.
//  Wenn dieser Code in einem Projekt verwendung findet, würde ich
//  mich lediglich über eine kleine Nachricht freuen!
Ich denke nicht Aber das eigentliche Problem wird es wohl (leider) nicht lösen.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#8

AW: pbstMarquee richtig verwenden?

  Alt 13. Jun 2011, 17:31
Warum nicht ? Die Progressbar läuft und läuft und läuft... egal was die GUI oder der Rest macht.
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#9

AW: pbstMarquee richtig verwenden?

  Alt 13. Jun 2011, 17:41
Wäre zu schön um wahr zu sein, aber wenn der Hauptthread hängt, dann wird nichts neu gezeichnet, zumindest kenne ich es so Zudem habe ich hier sogar noch den Beweis, dass es nicht gehen kann:
Delphi-Quellcode:
procedure TMarqueeThread.Execute;
begin
  inherited;
  repeat
    if WaitForSingleObject(FStop, FInterval) = WAIT_TIMEOUT then
      Synchronize(DoOnTimer);
  until Terminated;
end;
Die Animation selbst wird via Thread berechnet, okay. Aber dann wird hier Synchronize aufgerufen, sodass die ProgressBar neu gezeichnet wird. Hängt der Hauptthread, dann steht somit auch der TMarqueeThread, da das Synchronize erst dann zurückkehrt, wenn der Hauptthread die gegebene Methode abgearbeitet hat, aber der steht ja...
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: pbstMarquee richtig verwenden?

  Alt 13. Jun 2011, 17:50
Ok, danke für die Antworten. Ich dachte, die Progressbar startet im Marquee-Mode selbst einen eigenen Thread in dem sie sich neu zeichnet - und ich hätte etwas falsch eingestellt.
Ich rufe jetzt StepIt erst mal in meiner Speicherfunktion auf. Das tut es erst mal notdüftig.

Andere Lösungen teste ich ggf. später mal noch.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:15 Uhr.
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