在TPanel中发布一个事件。比如: TMyPanel = class(TPanel) private FOnButtonClick: TNotifyEvent; procedure ButtonClick(Sender: TObject); published property OnButtonClick: TNotifyEvent read FOnButtonClick write FOnButtonClick; end;创建按钮时,加上: 按钮.OnClick := ButtonClick;———————————————————————————————————— 宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。 ————————————————————————————————————implementation{ TMyPanel }procedure TMyPanel.ButtonClick(Sender: TObject); begin if Assigned(FOnButtonClick) then FOnButtonClick(Sender); end;
我现在在ButtonClick中添加要执行的代码,但好像无法运行到那里。
procedure TMyPanel.ButtonClick(Sender: TObject); begin if Assigned(FOnButtonClick) then FOnButtonClick(Sender); end; 如果按照前面朋友的说法,楼主你在ButtonClick中不需添加代码,因为你注意到没有: FOnButtonClick(Sender);就是说执行它的代码,这样你的三个按钮都可以复用同一段代码了。 不过感觉你要问的不是这个问题。 问一句,你要截获三个按钮的消息?这是你要表达的意思吗?
private
FOnButtonClick: TNotifyEvent;
procedure ButtonClick(Sender: TObject);
published
property OnButtonClick: TNotifyEvent read FOnButtonClick write FOnButtonClick;
end;创建按钮时,加上:
按钮.OnClick := ButtonClick;————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————implementation{ TMyPanel }procedure TMyPanel.ButtonClick(Sender: TObject);
begin
if Assigned(FOnButtonClick) then
FOnButtonClick(Sender);
end;
begin
if Assigned(FOnButtonClick) then
FOnButtonClick(Sender);
end;
如果按照前面朋友的说法,楼主你在ButtonClick中不需添加代码,因为你注意到没有:
FOnButtonClick(Sender);就是说执行它的代码,这样你的三个按钮都可以复用同一段代码了。
不过感觉你要问的不是这个问题。
问一句,你要截获三个按钮的消息?这是你要表达的意思吗?