AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi URLDownloadToFile Dialog hängt.
Thema durchsuchen
Ansicht
Themen-Optionen

URLDownloadToFile Dialog hängt.

Ein Thema von EWeiss · begonnen am 25. Jan 2019 · letzter Beitrag vom 27. Jan 2019
 
EWeiss
(Gast)

n/a Beiträge
 
#1

URLDownloadToFile Dialog hängt.

  Alt 25. Jan 2019, 23:45
Kleines Problem.
Ich verwende diesen Tip aus der CodeLibrary etwas angepasst auf meine Bedürfnisse.

Meine Frage ist wie oft wird die Callback aufgerufen?
Denn mein Dialog hängt kann ihn nicht bedienen trotz WinprocessMessages..

Delphi-Quellcode:
function TBindStatusCallback.OnProgress(ulProgress, ulProgressMax, ulStatusCode: ULONG;
  szStatusText: LPCWSTR): HResult;
var
  szST: string;
begin

  if FTimeouCheck then
  begin
    if GetCurrentTime > FTimeoutValue then
    begin
      Result := E_ABORT;
      szST := 'TimeOut.. no TMDB_backdrop is loaded';
      SendMessage(GetDlgItem(hDlg, ID_DOWNLOADTEXT), WM_SETTEXT, 0, LONG_PTR(szST));
      Sleep(3000);
      SendMessage(hDlg, WM_CLOSE, 0, 0);
      hDlg := 0;
      Exit;
    end;
  end;

   case ulStatusCode of

     BINDSTATUS_CONNECTING:
     begin
       szST := 'Connected to Server ' + szStatusText;
       SendMessage(GetDlgItem(hDlg, ID_DLG_INFOSTATUS), WM_SETTEXT, 0, LONG_PTR(szST));

       if(FUserCancel) then
       begin
         Result := E_ABORT;
         exit;
       end;
     end;

     BINDSTATUS_BEGINDOWNLOADDATA:
       begin
         // reset progressbar ******* hier inkrementiere ich die Value weil BINDSTATUS_DOWNLOADINGDATA nie aufgerufen wird.
         inc(Value, 50);
         ProgressBar.Value := Value;
         SKAERO_InvalidateRect(ProgressBar.Handle, false);
         // show current action
         case Value of
           50:
             szST := 'Downloading TMDB_backdrop';
           100:
             szST := 'Downloading TMD_Poster';
         end;

         SendMessage(GetDlgItem(hDlg, ID_DOWNLOADTEXT), WM_SETTEXT, 0, LONG_PTR(szST));

         // download exit by the user?
         if(FUserCancel) then
           begin
             Result := E_ABORT;
             exit;
           end;
       end;

     BINDSTATUS_DOWNLOADINGDATA:
       begin
         // update progress
         SendMessage(GetDlgItem(hDlg, ID_PROGRESS), PBM_SETPOS, MulDiv(ulProgress, 100, ulProgressMax), 0);

         // download exit by the user?
         if(FUserCancel) then
           begin
             Result := E_ABORT;
             exit;
           end;
       end;

     BINDSTATUS_ENDDOWNLOADDATA:
       begin
         if Value = 100 then
         begin
           SendMessage(hDlg, WM_CLOSE, 0, 0);
           hDlg := 0;
         end;
       end;
   end;

    // message pump
   WinProcessMessages;

   Result := S_OK;
end;
Delphi-Quellcode:
procedure WinProcessMessages;
var
  ProcMsg: TMsg;
begin
  while PeekMessage(ProcMsg, 0, 0, 0, PM_REMOVE) do
  begin
    if (ProcMsg.message = WM_QUIT) then
      Exit;
    TranslateMessage(ProcMsg);
    DispatchMessage(ProcMsg);
  end;
end;
BINDSTATUS_DOWNLOADINGDATA wird auch niemals aufgerufen.
FUserCancel kann ich auch nicht bedienen weil der Dialog hängt.
Gib es da keine bessere Alternative um 2 Images zu laden ?

gruss

Geändert von EWeiss (26. Jan 2019 um 02:52 Uhr)
  Mit Zitat antworten Zitat
 


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 15:56 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