Delphi 从内部组件传播事件
我正在编写一个包含少数组件的组件Delphi 从内部组件传播事件,delphi,events,Delphi,Events,我正在编写一个包含少数组件的组件 TMyComponent = class(TPanel) private fGrid : TExCustomDBGrid; fOnCellClick : TDBGridClickEvent; public constructor Create(AOwner: TComponent); override; published property OnCellClick: TDBGridClickEvent read FOn
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;
我希望能够将事件从组件(TPanel)传播到包含的fGrid。
我怎样才能达到这个目标
我想我应该在TPanel上声明一个类型相同的事件(作为容器组件)。那么如何传播到fGrid中呢?您的要求有点不清楚,但是根据我看到的代码,编写一个事件处理程序并将其分配给网格
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;
有点不清楚您在问什么,但根据我看到的代码,编写一个事件处理程序并将其分配给网格
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;
我假设我的答案就是你想要的,但你似乎在反向描述传播,这有点让人困惑。你不是从面板传播到网格,而是从网格传播到面板。你是对的。事实上我想在我的TPanel中有一个事件,它将在DBGrid.OnCellClick事件被raize之后调用。要执行我在TPanel.OncellClick事件中输入的代码,我假设我的答案就是您所寻找的,但您似乎在反向描述传播,这有点令人困惑。你不是从面板传播到网格,而是从网格传播到面板。你是对的。事实上我想在我的TPanel中有一个事件,它将在DBGrid.OnCellClick事件被raize之后调用。要执行我放入TPanel.OncellClick事件中的代码。