在Delphi中处理TMenuItem.Action.Visible的更改
在Delphi中,我想处理菜单项的在Delphi中处理TMenuItem.Action.Visible的更改,delphi,Delphi,在Delphi中,我想处理菜单项的TMenuItem.Action.Visible属性的更改。这是作为弹出菜单项放置在TAdvGlowButton.DropDownMenu属性中的 首先,我尝试使用traction的OnUpdate事件,但当菜单弹出时,该事件出现得太晚,而不是当Visible属性的更改真正完成时 同样,用处理程序覆盖菜单项的ActionLink.OnChange属性也没有帮助,该处理程序同时执行源处理程序和自己的处理程序 有人有办法解决这个问题吗 我希望在设置Visible属性
TMenuItem.Action.Visible
属性的更改。这是作为弹出菜单项放置在TAdvGlowButton.DropDownMenu
属性中的
首先,我尝试使用traction
的OnUpdate
事件,但当菜单弹出时,该事件出现得太晚,而不是当Visible
属性的更改真正完成时
同样,用处理程序覆盖菜单项的ActionLink.OnChange
属性也没有帮助,该处理程序同时执行源处理程序和自己的处理程序
有人有办法解决这个问题吗
我希望在设置
Visible
属性时引发事件处理程序,而不仅仅是在弹出菜单时
这些动作不是我创造的。因此,我无法更改它们的类型以使此事件可从外部访问(protected->public)。更改操作的
Visible
属性的明显位置是其OnChange
事件。不幸的是,这个事件不是公开的,更不用说公开了
然而,有一种方法可以通过使用类帮助程序
将事件处理程序设置为OnChange
事件
在新(或合适的现有)单元中创建类帮助器。这是一个工作示例:
unit ActionHelper;
interface
type
TActionHelper = class helper for TBasicAction
private
function GetOnChange: TNotifyEvent;
procedure SetOnChange(const Value: TNotifyEvent);
public
property OnChange: TNotifyEvent read GetOnChange write SetOnChange;
end;
implementation
function TActionHelper.GetOnChange: TNotifyEvent;
begin
Result := inherited OnChange;
end;
procedure TActionHelper.SetOnChange(const Value: TNotifyEvent);
begin
inherited OnChange := Value;
end;
end.
无论何时将此单元添加到uses子句,都可以将任何TBasicAction
子体的OnChange
属性连接到适当的事件处理程序
尽管此till不允许在对象检查器中连接OnChange
事件,但它是一种非常方便的方式,可以在某些操作属性更改时获得通知。更改操作的可见属性的明显位置是其OnChange
事件。不幸的是,这个事件不是公开的,更不用说公开了
然而,有一种方法可以通过使用类帮助程序
将事件处理程序设置为OnChange
事件
在新(或合适的现有)单元中创建类帮助器。这是一个工作示例:
unit ActionHelper;
interface
type
TActionHelper = class helper for TBasicAction
private
function GetOnChange: TNotifyEvent;
procedure SetOnChange(const Value: TNotifyEvent);
public
property OnChange: TNotifyEvent read GetOnChange write SetOnChange;
end;
implementation
function TActionHelper.GetOnChange: TNotifyEvent;
begin
Result := inherited OnChange;
end;
procedure TActionHelper.SetOnChange(const Value: TNotifyEvent);
begin
inherited OnChange := Value;
end;
end.
无论何时将此单元添加到uses子句,都可以将任何TBasicAction
子体的OnChange
属性连接到适当的事件处理程序
尽管此till不允许在对象检查器中连接OnChange
事件,但它是一种非常方便的方式,可以在某些操作属性发生更改时获得通知。通常,您使用操作的OnUpdate
事件处理程序进行此操作。这对我来说一直很有效。您可能希望更清楚地了解您需要什么。我希望在设置Visible属性时,而不仅仅是在弹出菜单时,引发事件处理程序。那么操作的OnChange事件呢?而不是ActionLink?这些操作不是我创建的。因此,我无法更改它们的类型以使此事件可从外部访问(protected->public)。通常,您使用操作的OnUpdate
事件处理程序进行此操作。这对我来说一直很有效。您可能希望更清楚地了解您需要什么。我希望在设置Visible属性时,而不仅仅是在弹出菜单时,引发事件处理程序。那么操作的OnChange事件呢?而不是ActionLink?这些操作不是我创建的。因此,我无法更改它们的类型以使此事件可从外部访问(protected->public)