gpt4 book ai didi

delphi - 自定义组件如何处理其子组件的事件?

转载 作者:行者123 更新时间:2023-12-03 15:22:13 25 4
gpt4 key购买 nike

我正在设计一个面板后代组件,上面有一个按钮控件:

THidePanel = class(TPanel)
private
TActivateButton: TButton;
public
constructor Create(aOwner: TComponent); override;
procedure WMSize(var Msg: TWMSize); message WM_SIZE;
procedure HideComponents;
end;

该组件如何处理其 TActivateButton 控件的 OnClick 事件?

最佳答案

由于该按钮是组件私有(private)的,因此您可以将事件处理程序附加到它,即

THidePanel = class(TPanel)
...
private
procedure H_ActivateButtonClick(Sender: TObject);
...
end;

constructor THidePanel.Create(aOwner: TComponent);
begin
inherited;
...
FActivateButton := TButton.Create(Self);
FActivateButton.Parent := Self;
FActivateButton.OnClick:= H_ActivateButtonClick;
end

procedure THidePanel.H_ActivateButtonClick(Sender: TObject)
begin
// button is clicked!
end

如果您还需要向组件的最终用户提供事件,那么您需要添加 TNotifyEvent 属性并从内部处理程序调用它,即

THidePanel = class(TPanel)
private
FOnActivateBtnClick: TNotifyEvent;
...
published
property OnActivateButtonClick: TNotifyEvent read FOnActivateBtnClick write FOnActivateBtnClick;
end;

procedure THidePanel.H_ActivateButtonClick(Sender: TObject)
begin
// button is clicked!
...
// fire the end user event
if(Assigned(FOnActivateBtnClick))then FOnActivateBtnClick(Self);
end

关于delphi - 自定义组件如何处理其子组件的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15848524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com