Вниз
Скачать: 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.023 c
14-1121092567
Dimedrol
2005-07-11 18:36
2005.07.31
Как увидеть сообщение об ошибке проги в WinXP ?


4-1117561700
seamcat
2005-05-31 21:48
2005.07.31
ExitProcess


4-1117885575
Immortal
2005-06-04 15:46
2005.07.31
text rotate


1-1121247674
webpauk
2005-07-13 13:41
2005.07.31
сообщение dblclick


1-1121227702
rainy
2005-07-13 08:08
2005.07.31
Создание компонентов




   Наверх