Текущий архив: 2005.07.31;
Скачать: 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 вся ветка
Текущий архив: 2005.07.31;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.037 c