代码之家  ›  专栏  ›  技术社区  ›  yarek

delphi覆盖webbrowserH

  •  2
  • yarek  · 技术社区  · 14 年前

    我试着制作一个剪接的webbrowser,它实际上是一个具有额外功能的Twebbrowser:当页面在30秒内没有加载时,它会发送一个事件时间路由。

    所以我在TwebbrowsersTimerOut中添加了一个从Twebbrowser继承的计时器。

    我们的想法是在BeforeNavigate或DownloadBegin事件中使用这个计时器:并在onDownloadComplete事件中停止计数器。

    问题是,我不知道如何覆盖这些事件: 更全面地说,如何超越现有组件的事件:有人能帮助我超越TWebBuffes组件,尤其是它的事件吗?

    当做

    1 回复  |  直到 14 年前
        1
  •  1
  •   Darian Miller    14 年前

    通常,事件只是可以在自定义子体中设置的常规属性。您基本上可以拦截事件并提供自己的控制器。

    例如,我刚刚创建了一个覆盖OnEnter事件的组件…

    interface
    
    TmyWhatever = class(TWhateverAncestor)
    private
      fMyOnExit:TNotifyEvent
    protected
      procedure CustomOnExitEvent(Sender:TObject);
    public
      constructor Create(AOwner:TComponent); override;
    published
      //we provide our own OnExit event (to be set by the developer using this component)
      property OnExit:TNotifyEvent read fMyOnExit write fMyOnExit
    end;
    
    implementation
    
    constructor TmyWhatever.Create(AOwner:TComponent);
    begin
      inherited;
    
      //setup our event in the parent
      inherited OnExit := CustomOnExitEvent;
    end;
    
    procedure TmyWhatever.CustomOnExitEvent(Sender:TObject);
    begin
      //perhaps do custom work before the OnExit
    
      //and then call the intercepted OnExit event, if needed
      if Assigned(fMyOnExit) then
      begin
        fMyOnExit(Sender);
      end;
    
      //perhaps do custom work after the OnExit 
    end;