Einzelnen Beitrag anzeigen

citybreaker
(Gast)

n/a Beiträge
 
#3

Re: Download fortschritt als im/als Image

  Alt 16. Apr 2004, 19:21
Was für eine Callback procedure?

Hab folgendes genommen und nun versucht so zuändern das es mit einem Image geht?
Progressbar.Progress durch Proressbalken.Width(<< das image) ersetzt.

Delphi-Quellcode:
type
  cDownloadStatusCallback = class(TObject,IUnknown,IBindStatusCallback)
  private
    function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
    function _AddRef: Integer; stdcall; function OnStartBinding(dwReserved: DWORD; pib: IBinding): HResult; stdcall;
    function GetPriority(out nPriority): HResult; stdcall;
    function OnLowResource(reserved: DWORD): HResult; stdcall;
    function OnProgress(ulProgress, ulProgressMax, ulStatusCode: ULONG; szStatusText: LPCWSTR): HResult; stdcall;
    function OnStopBinding(hresult: HResult; szError: LPCWSTR): HResult; stdcall;
    function GetBindInfo(out grfBINDF: DWORD; var bindinfo: TBindInfo): HResult; stdcall;
    function OnDataAvailable(grfBSCF: DWORD; dwSize: DWORD; formatetc: PFormatEtc; stgmed: PStgMedium): HResult; stdcall;
    function OnObjectAvailable(const iid: TGUID; punk: IUnknown): HResult; stdcall;
  end;
Delphi-Quellcode:
function cDownloadStatusCallback._AddRef: Integer;
begin
  Result := 0;
end;

function cDownloadStatusCallback._Release: Integer;
begin
  Result := 0;
end;

function cDownloadStatusCallback.QueryInterface(const IID: TGUID; out Obj): HResult;
begin
  if(GetInterface(IID,Obj)) then
  begin
    Result := 0
  end
  else
  begin
    Result := E_NOINTERFACE;
  end;
end;

function cDownloadStatusCallback.OnStartBinding(dwReserved: DWORD; pib: IBinding): HResult;
begin
  Result := S_OK;
end;

//
function cDownloadStatusCallback.GetPriority(out nPriority): HResult;
begin
  Result := S_OK;
end;

function cDownloadStatusCallback.OnLowResource(reserved: DWORD): HResult;
begin
  Result := S_OK;
end;

function cDownloadStatusCallback.OnStopBinding(hresult: HResult; szError: LPCWSTR): HResult; stdcall;
begin
  Result := S_OK;
end;

function cDownloadStatusCallback.GetBindInfo(out grfBINDF: DWORD; var bindinfo: TBindInfo): HResult; stdcall;
begin
  Result := S_OK;
end;

//
function cDownloadStatusCallback.OnDataAvailable(grfBSCF: DWORD; dwSize: DWORD; formatetc: PFormatEtc; stgmed: PStgMedium): HResult;
begin
  Result := S_OK;
end;

//
function cDownloadStatusCallback.OnObjectAvailable(const iid: TGUID; punk: IUnknown): HResult; stdcall;
begin
  Result := S_OK;
end;

function cDownloadStatusCallback.OnProgress(ulProgress, ulProgressMax, ulStatusCode: ULONG; szStatusText: LPCWSTR): HResult;
begin
  case ulStatusCode of
    BINDSTATUS_BEGINDOWNLOADDATA:
    begin
      MainFrm.ProgressBalken.Width := 0;
      MessageDlg('Der Download wurde gestartet.', MtInformation, [mbYes], 0);
      if (UserCancel) then
      begin
        Result := E_ABORT;
        exit;
    function _Release: Integer; stdcall;

      end;
    end;
    BINDSTATUS_DOWNLOADINGDATA:
    begin
      MainFrm.ProgressBalken.Width := MulDiv(ulProgress,100, 240 );
      MessageDlg('Datei wird runtergeladen.', MtInformation, [mbYes], 0);
      if (UserCancel) then
      begin
        Result := E_ABORT; exit;
      end;
    end;
    BINDSTATUS_ENDDOWNLOADDATA:
    begin
      MessageDlg('Download wurde beendet.', MtInformation, [mbYes], 0);
    end;
  end;
  Application.ProcessMessages;

  Result := S_OK;
end;
So nun kommen die Fehlermeldungen bei Compilieren.
Zitat:
Deklaration von "GetPriority" unterscheidet sich von der Deklaration in interface 'IBindStatusCallBack'

Deklaration von "OnDataAvaiable" unterscheidet sich von der Deklaration in interface 'IBindStatusCallBack'

Deklaration von "OnObjectAvaiable" unterscheidet sich von der Deklaration in interface 'IBindStatusCallBack'
  Mit Zitat antworten Zitat