![]() |
StatusBar anstatt Download-Fenster
Servus Leute!
Bin immernoch an meinem Browser dran. Es geht um Download kleiner Dateien, in meinem Fall sind es (viele) Bilder. Ich habe den Download etwas automatisiert, d.h. das Programm lädt mir die Bilder aus einer Liste (ListBox) ins Verzeichniss XY. Problem: 1. Während des Downloads ist das ganze Programm nicht ansprechbar und 2. Ich wollte es so machen, dass das Programm a) mir den jeweiligen Download und den dazu gehörigem Fortschrittsbalken (wie in der ProgressBar) in der StatusBar anzeigt b) den Gesammtfortschritt azeigt. Sollte gehen, da die Anzahl der zuladenden Dateien bekannt ist (ListBox1.Items.Count oder so). Code zu 1.
Delphi-Quellcode:
Hat jemand ne Idee oder Erfahrung?
procedure TForm1.DownloadClick(Sender: TObject);
var d: String; //Ordner Name url,ziehl: pchar; begin d:=getcurrentwb.LocationName; createdir('c:/'+d); for i := 0 to Listbox2.items.Count - 1 do begin url:=pchar(listbox2.Items.Strings[i]); ziehl:=pchar('c:/'+d+'/'+inttostr(i+1)+'.jpg'); URLDownloadToFile(nil, url, ziehl, 0 , nil); end; end; EDIT1 Habe ![]()
Delphi-Quellcode:
auf die StatusBar und wie funtioniert der Aufruf?
Form1.Gauge1.Progress := MulDiv(ulProgress,100,ulProgressMax);
|
Re: StatusBar anstatt Download-Fenster
Also ich denk mal zum thema "Anwedung reagiert nicht" solltest du dir mal
Delphi-Quellcode:
ansehen.
Application.ProcessMessages
zum 2. punkt: du willst wirklich für jeden download eine Progressbar in der statusleiste haben? das passt da doch dann gar nicht alles rein oder? eine für alles ist ja okay aber mehr? ich weiß nicht... für alle würde ich einfach die gesamtanzahl bytes ermitteln und dann gucken wie viel du schon geladen hast. Wenn du es so machst, dass du guckst wie viele bilder schon geladenen wurden, wird die anzeige nämlich ein bisschen springen... gruß |
Re: StatusBar anstatt Download-Fenster
Hey das mit
Delphi-Quellcode:
funzt - einfach vor dem "Donwload" einsetzen.
Application.ProcessMessages;
Delphi-Quellcode:
procedure TForm1.DownloadClick(Sender: TObject);
var d: String; url,ziehl: pchar; begin d:=getcurrentwb.LocationName; createdir('c:/'+d); for i := 0 to Listbox2.items.Count - 1 do begin Application.ProcessMessages; // Hier Einsetzen - Dann schmiert das Prog nicht ab :-) url:=pchar(listbox2.Items.Strings[i]); ziehl:=pchar('c:/'+d+'/'+inttostr(i+1)+'.jpg'); URLDownloadToFile(nil, url, ziehl, 0 , nil); end; end; Zitat:
Zitat:
|
Re: StatusBar anstatt Download-Fenster
Ich habs.
Zuerst ![]()
Delphi-Quellcode:
Somit brauche ich auch keine Gauge mehr. :thumb:
...
BINDSTATUS_FINDINGRESOURCE: begin form1.StatusBar2.Panels[1].Text := 'Datei wurde gefunden...'; if (usercancel) then begin Result := E_ABORT; exit; end; end; BINDSTATUS_CONNECTING: begin form1.StatusBar2.Panels[1].Text := 'Es wird verbunden...'; if (usercancel) then begin Result := E_ABORT; exit; end; end; BINDSTATUS_BEGINDOWNLOADDATA: begin Form1.progressbar1.Position := 0; form1.StatusBar2.Panels[1].Text := 'Der Download wurde gestartet...'; if (UserCancel) then begin Result := E_ABORT; exit; end; end; BINDSTATUS_DOWNLOADINGDATA: begin Form1.progressbar1.Position := MulDiv(ulProgress,100,ulProgressMax); form1.StatusBar2.Panels[1].Text := 'Datei wird heruntergeladen...'; if (UserCancel) then begin Result := E_ABORT; exit; end; end; BINDSTATUS_ENDDOWNLOADDATA: begin form1.StatusBar2.Panels[1].Text := 'Download wurd beendet...'; end; ... Hier ist mein Aufruf:
Delphi-Quellcode:
Jetzt nur noch den Gesammtbalken.
procedure TForm1.DownloadClick(Sender: TObject);
begin dl; end; procedure tform1.DL; var d: String; url,ziehl: pchar; cDownStatus : cDownloadStatusCallback; begin cDownStatus := cDownloadStatusCallBack.Create; d:=getcurrentwb.LocationName; createdir('c:/'+d); for i := 0 to Listbox2.items.Count - 1 do begin Application.ProcessMessages; url:=pchar(listbox2.Items.Strings[i]); ziehl:=pchar('c:/'+d+'/'+inttostr(i+1)+'.jpg'); URLDownloadToFile(nil, url, ziehl, 0 , CDownStatus); end; end; Zitat:
|
Re: StatusBar anstatt Download-Fenster
Hallo,
Da du viele kleine Bilder herunterladen möchtest, könnte man den Fortschritt anhand der Total / heruntergeladenen Bilder berechnen. d.h z.B bei Total 50 Bildern die Progressbar.Max auf 50 setzen und bei jedem heruntergeladenen Bild die Position der Progressbar um eins erhöhen. Die andere Methode wäre, wie schon geschrieben: Zitat:
|
Re: StatusBar anstatt Download-Fenster
Danke!
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:21 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