0
我創建從TNetHTTPClient一個組成部分,我喜歡超載事件(在TNetHTTPClient私人部分申報程序):超負荷TNetHTTPClient事件(私有方法不是虛擬的)
TNetHTTPClient = class(TComponent)
private
procedure DoOnRequestCompleted(const Sender: TObject; const AResponse: IHTTPResponse);
procedure DoOnRequestError(const Sender: TObject; const AError: string);
procedure DoOnReceiveData(const Sender: TObject; AContentLength: Int64; AReadCount: Int64; var Abort: Boolean);
,但我可以不要從我的班級打電話給他們:像這樣。
TRequestAccess = class(TNetHTTPClient)
private
procedure ShowLoadAnimation ;
procedure HideLoadAnimation ;
procedure DoOnRequestCompleted(const Sender: TObject; const AResponse: IHTTPResponse); override;
procedure DoOnRequestError(const Sender: TObject; const AError: string); override;
procedure DoOnReceiveData(const Sender: TObject; AContentLength: Int64; AReadCount: Int64; var Abort: Boolean); override;
...
procedure TRequestAccess.DoOnReceiveData(const Sender: TObject; AContentLength,
AReadCount: Int64; var Abort: Boolean);
begin
self.HideLoadAnimation ;
inherited;
end;
procedure TRequestAccess.DoOnRequestCompleted(const Sender: TObject;
const AResponse: IHTTPResponse);
begin
self.HideLoadAnimation ;
inherited;
end;
procedure TRequestAccess.DoOnRequestError(const Sender: TObject;
const AError: string);
begin
self.HideLoadAnimation ;
inherited;
end;
ShowLoadAnimation和HideLoadAnimation是自動顯示和隱藏指標的兩個函數。
似乎我不能重寫,因爲它是在私人和非虛擬聲明?
我該怎麼做?
我想我不能重寫我自己的功能,因爲有一個線程..
procedure TNetHTTPClient.DoOnRequestError(const Sender: TObject; const AError: string);
begin
if Assigned(FOnRequestError) then
TThread.Synchronize(nil, procedure
begin
FOnRequestError(Sender, AError);
end);
end;