关于Delphi:Delphi-创建可视组件

Delphi - Creating a visual component & assigning event to it

本问题已经有最佳答案,请猛点这里访问。

我如何在运行时创建可视组件并将事件分配给一个单元。

我尝试使用以下代码,但是它显示了

method pointer and regular procedure

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
unit uName;

interface

Uses
  ....
  SHDocVw;

implementation

procedure DocComplete(ASender: TObject; const pDisp: IDispatch;
  const URL: OleVariant);
begin
  //DoSomething
end;

procedure CreateWB;
var
  wb: TWebBrowser;
Begin
  wb := TWebBrowser.Create(bgPnl);
  with wb do
  .....
  wb.OnDocumentComplete  := DocComplete; // Error line > E2009 Incompatible types
End;


您必须在项目的表单类或其他类中声明自己的事件(根据需要在私有块或公共类中)

1
2
3
4
  private
    { Private declarations }
    procedure DocCopmlete(ASender: TObject; const pDisp: IDispatch; const URL: OleVariant);
  public

然后您可以将WebBrowser事件分配给新事件。

1
wb.OnDocumentComplete := yourClass.DocCopmlete;

因此您可以使用类而不是像您这样的单元(单元uName)