Вниз
Скачать: CL | DM;

обясните как переопределить interface (IBindStatusCallback)   Найти похожие ветки 

 
BANick   (2005-07-14 14:57) [0]

Есть форма main:Tmain;
на ней есть прогресс бар PB:TProgressBar;
как мне сделать, чтобы при зарузге файла у меня заполнялся прогресс файл, прошу дополнить мой код.


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ComCtrls;

type
 Tmain = class(TForm)
   PB: TProgressBar;
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 main: Tmain;
 DURL:IBindStatusCallback;
implementation

{$R *.dfm}
function OnProgress(ulProgress: Cardinal; ulProgressMax: Cardinal;
     ulStatusCode: Cardinal; szStatusText: PWideChar): HRESULT;
begin
 main.pb.Max:=ulProgressMax;
 main.pb.Position:=ulProgress;
 application.ProcessMessages;
 result:=S_OK;
end;

procedure Tmain.FormCreate(Sender: TObject);
begin
UrlDownloadToFile(nil,PChar(SourceFile), PChar(DestFile), 0,DURL);
end;

end.

уже перепробовал все что пришло в голову: (


 
Digitman ©   (2005-07-14 15:20) [1]


> как переопределить interface


никак.

тебе не переопределять его нужно, а реализовать объект, предоставляющий этот интерфейс.

TBindStatusCallback = class(TInterfacedObject, IBindStatusCallback)
private
 function OnProgress(ulProgress: Cardinal; ulProgressMax: Cardinal; ulStatusCode: Cardinal; szStatusText: PWideChar): HRESULT; stdcall;
 function OnDataAvailable(grfBSCF: DWORD; dwSize: DWORD; pformatetc, pstgmed: Pointer): HRESULT; stdcall;
end;

function TBindStatusCallback.OnProgress;
begin
..
end;

..
procedure Tmain.FormCreate(Sender: TObject);
begin
UrlDownloadToFile(nil,PChar(SourceFile), PChar(DestFile), 0, BindStatusCallback.Create as IBindStatusCallback);
end;


 
BANick   (2005-07-14 15:31) [2]

Спасибо - все работает. под "переопределить" я это и имел ввиду. я так пробовал, только не понимал какой класс ставить первым - пробовал ставить туда мой класс пустой, ошибок не выдовало, но и метод онпрогресс не вызывался


 
Digitman ©   (2005-07-14 16:11) [3]


> только не понимал какой класс ставить первым


в принципе - любой

просто TInterfacedObject удобен тем что уже реализует методы IUnknown и ведет подсчет интерф.ссылок



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.021 c
3-1119420416
CRACKISH
2005-06-22 10:06
2005.07.31
Копирование куска базы!


1-1121089198
grusty
2005-07-11 17:39
2005.07.31
Какое сообщение возникает при изменении размера MDIChild формы...


14-1120785225
Миллиадр
2005-07-08 05:13
2005.07.31
Как называются числа больше миллиарда ?


14-1120557953
Kerk
2005-07-05 14:05
2005.07.31
Мюзиклы


14-1120901589
Магнум
2005-07-09 13:33
2005.07.31
Мария Кириленко




   Наверх