AGB  ·  Datenschutz  ·  Impressum  







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

progressbar problem/gauge

Ein Thema von painrestricter · begonnen am 3. Dez 2009 · letzter Beitrag vom 4. Dez 2009
Antwort Antwort
painrestricter

Registriert seit: 2. Nov 2009
43 Beiträge
 
#1

progressbar problem/gauge

  Alt 3. Dez 2009, 17:07
Hallo,

kam gerade auf die idee mir einen kleinen wecker (eher countdowner) zu schreiben, weil ich immer meine pizza anbrennen lasse

klappt eig alles, nur wollte ich den fortschritt, also das zählen der sekunden noch festhalten, zb in einer progressbar (ich hab sgauge genommen, weil da so schön die prozent drinnen stehen ^^)

nur schaff ich das irgendwie nicht, dass die sekunden/millisekunden in der progressbar angezeigt werden.

weiterhin ist zu erwähnen, dass ich noch nie mit progressbars gearbeitet habe.

Delphi-Quellcode:
var
  Form1: TForm1;
  zeit, ms : integer;

implementation

{$R *.dfm}

procedure TForm1.sButton2Click(Sender: TObject);
begin
messagedlg('blabla', mtinformation, mbokcancel, 0);
end;

procedure TForm1.sButton1Click(Sender: TObject);
var i : integer;
begin
zeit := strtointdef(sedit1.text, 1);
if sedit1.text = 'then begin
  sedit1.text := '1';
 end;
ms := zeit * 60 * 1000;
timer1.Interval := ms;
sgauge1.MinValue := 0;
sgauge1.MaxValue := ms;
for i := 1 to 100 do begin
 sgauge1.progress := sgauge1.Progress +1 ;
end;
Timer1.Enabled := true;
Showmessage('Countdown beginnt, alarm in ' + inttostr(zeit) + ' minute/n');

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Enabled := false;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var i: integer;
begin
 for i := 1 to 100 do begin
   windows.Beep(1000,100)
 end;
sedit1.Clear;
end;

end.
#

danke
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: progressbar problem/gauge

  Alt 3. Dez 2009, 17:56
Du kannst mein Countdown Programm als Startpunkt verwenden und für deine Zwecke umbauen.
Andreas
  Mit Zitat antworten Zitat
painrestricter

Registriert seit: 2. Nov 2009
43 Beiträge
 
#3

Re: progressbar problem/gauge

  Alt 4. Dez 2009, 15:40
naja hat mir jetzt nicht richtig geholfen, die progressbar funktioniert immer noch nicht ( bzw immer noch falsch)
  Mit Zitat antworten Zitat
Whatever

Registriert seit: 7. Jan 2009
Ort: 127.0.0.1
102 Beiträge
 
#4

Re: progressbar problem/gauge

  Alt 4. Dez 2009, 16:09
Hallo,
guck dir deinen Quelltext nochmal an...
So wie er jetzt ist, wird .Progres des Gauges unabhängig vom .MaxValue um 100 erhöht. Dies geschieht bevor der Countdown begonnen hat. Bei einem Gauge gibt MaxValue den Wert für 100% an. Bei 10 Minuten wären 100% also 600000(ms) und so ist es kein Wunder das Du nichts von deinem Progress siehst(,da Du ja bedingungslos um 100 erhöhst)...
Siehst Du den Fehler?
Grüße
  Mit Zitat antworten Zitat
painrestricter

Registriert seit: 2. Nov 2009
43 Beiträge
 
#5

Re: progressbar problem/gauge

  Alt 4. Dez 2009, 17:34
ja, ich seh ihn, aber bin am verzweifeln wie man ihn beseitigen kann

ist doch eigentlich ganz leicht, nur leider scheiterts gerade bei mir an der logik
  Mit Zitat antworten Zitat
Whatever

Registriert seit: 7. Jan 2009
Ort: 127.0.0.1
102 Beiträge
 
#6

Re: progressbar problem/gauge

  Alt 4. Dez 2009, 18:32
Ganz genau eigentlich ist es ganz leicht, also möchte ich die Lösung aus dir rauskitzeln
Wo scheiterts denn genau? Welcher Schritt ist nicht klar?
  Mit Zitat antworten Zitat
painrestricter

Registriert seit: 2. Nov 2009
43 Beiträge
 
#7

Re: progressbar problem/gauge

  Alt 4. Dez 2009, 18:56
naja ich muss doch irgendwie den timer mit der progress bar synchronisieren oder?
start wert ist 0, max wert ist ms, also die millisekunden, die der countdown runterzählt

aber was ich auch versuche, sobald ich den start btn drücke, schießt die progressbar auf 100%
  Mit Zitat antworten Zitat
Whatever

Registriert seit: 7. Jan 2009
Ort: 127.0.0.1
102 Beiträge
 
#8

Re: progressbar problem/gauge

  Alt 4. Dez 2009, 19:12
sprichst Du das Gauge immernoch mit der for-Schleife an? Wenn ja dann dann mach doch sowas hier.
Delphi-Quellcode:
for i:= 1 to Gauge1.MaxValue do
  begin
    Gauge1.Progress:= Gauge1.Progress +1;
    Sleep(1);
  end;
Eine Alternative ist natürlich noch, den Gauge.Progress über den Timer zu verändern. Hierzu müsste dann der Timer in kleineren Intervalles ausgeführt werden und abfragen wann das Gauge voll ist.
(Dass das Gauge auf Max schießt liegt daran, dass die Schleife so schnell abgearbeitet wird, dass keine Zeit bleibt das Ergebnis anzuzeigen. Kleine unterbrechungen ruft Application.ProcessMessages hervor.)
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#9

Re: progressbar problem/gauge

  Alt 4. Dez 2009, 19:16
Ich versuchs mal.. aber nur weil mir langweilig ist, da ich auf eventuelle Antworten auf meinen Thread warte...

Delphi-Quellcode:
procedure TForm1.sButton1Click(Sender: TObject);
var i : integer;
begin
  zeit := strtointdef(sedit1.text, 1);
  if sedit1.text = 'then begin
    sedit1.text := '1';
  end;
  ms := zeit * 60 * 1000;
  // Das Intervall bestimmt, in welchen Abständen der Timer aufgerufen wird.
  // Also nehmen wir 1000ms = 1sek
  // Die Schleife war hier völlig über, weil sie nichts anderes gemacht
  // hat, als sgauge1.Position auf 100 zu setzen (wenn Position 0 war).
  timer1.Interval := 1000;
  sgauge1.Position := 0;
  sgauge1.MinValue := 0;
  sgauge1.MaxValue := ms;
  Timer1.Enabled := true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Enabled := false;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var i: integer;
begin
  // Und hier wird der Progress eben erhöht.
  // Warum sollte hier 100 mal gebeept werden?
  sgauge1.progress := sgauge1.progress + 1000;
  if sgauge1.progress = sgauge1.max then
  begin
    // Wenn Ende erreicht, piepen
    windows.beep(1000, 100);
  end;
end;
Hui, der rote Kasten... Whatevers Beispiel wäre auch okay, wenn das Timer-Intervall auf 1000 stehen würde, man auf Gauge1.Progress 1000 addieren würde und man Sleep(1000) benutzen würde. Das liegt daran, weil du hier mit Millisekunden hantierst - warum eigentlich?

HTH - und weil Freitag ist und ein Bierchen drin ist keine Garantie auf Richtigkeit, ausserdem ist alles ungetestet.
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  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 22:14 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