从内部组件传播事件

ffe*_*907 1 delphi events

我正在编写一个包含很少组件的组件.

TMyComponent = class(TPanel)
  private
    fGrid : TExCustomDBGrid;
    fOnCellClick : TDBGridClickEvent;
  public
    constructor Create(AOwner: TComponent); override;
  published
    property OnCellClick: TDBGridClickEvent read FOnCellClick write FOnCellClick;
  End;
...
constructor TMyComponent .Create(AOwner: TComponent);
begin
  inherited;
  fGrid := TExCustomDBGrid.Create(self);
  fGrid.parent := self;
  fGrid.Align := alClient;
end;
Run Code Online (Sandbox Code Playgroud)

我希望能够将事件从组件(TPanel)传播到包含的fGrid.我怎样才能实现这一目标?

我想我应该在TPanel上声明一个具有相同类型的事件(作为容器组件).那么如何传播到fGrid?

Jer*_*dge 6

有点不清楚你在问什么,但根据我看到的代码,编写一个事件处理程序并将其分配给网格......

procedure TMyComponent.DBGridCellClicked(Column: TColumn);
begin
  if Assigned(fOnCellClick) then
    fOnCellClick(Column);
end;

constructor TMyComponent.Create(AOwner: TComponent);
begin
  inherited;
  fGrid := TExCustomDBGrid.Create(self);
  fGrid.Parent := self;
  fGrid.Align := alClient;
  fGrid.OnCellClick := DBGridCellClicked;
end;
Run Code Online (Sandbox Code Playgroud)