我在工具栏上有几个按钮,样式定义为tbsDropDown和一个弹出式菜单。Check-ToolButton。在显示菜单之前我需要一个事件
我需要在显示菜单之前检查数据库中是否有任何记录。我添加了btnFilter.CheckMenuDropDown;到按钮的主要部分,所以我可以在那里查看,但“向下箭头”按钮显示弹出窗口。我需要在“BeforePopup”事件中进行干预
有什么建议吗?
感谢
我在工具栏上有几个按钮,样式定义为tbsDropDown和一个弹出式菜单。Check-ToolButton。在显示菜单之前我需要一个事件
我需要在显示菜单之前检查数据库中是否有任何记录。我添加了btnFilter.CheckMenuDropDown;到按钮的主要部分,所以我可以在那里查看,但“向下箭头”按钮显示弹出窗口。我需要在“BeforePopup”事件中进行干预
有什么建议吗?
感谢
出现的菜单之前,其OnPopup
事件触发。这让您有机会在最终显示菜单之前修改菜单的内容。
首先,TToolButton.CheckMenuDropDown
是一个例程,它总是下拉菜单,但在无法返回时返回False。
我知道您希望在数据集中没有记录时禁用下拉菜单。
可能的解决方案:
PopupMenu
属性为nil)时,有没有记录,反之亦然。这最好是通过将操作附加到按钮来完成。夹着TToolButton
类并覆盖CheckMenuDown
:
type
TToolButton = class(ComCtrls.TToolButton)
private
FCanDropDown: Boolean;
public
function CheckMenuDropdown: Boolean; override;
property CanDropDown: Boolean read FCanDropDown write FCanDropDown;
end;
function TToolButton.CheckMenuDropdown: Boolean;
begin
Result := FCanDropDown and (inherited CheckMenuDropdown);
end;
但是,这不是一个解决方案设计时,你必须相应地设置在运行时CanDropDown
财产。
CanDropDown
属性。
NGLN的假设是否正确,你想阻止菜单出现? – 2012-03-22 21:56:04