delphi - 如何将 OnHelp 事件处理程序附加到 Application 对象?
问题描述
在 Embarcadero Delphi XE7 中,我使用了一个带有帮助按钮的组件。在组件(显示消息对话框)中,我指定了帮助上下文编号。如果用户单击该按钮,则应显示帮助,但我收到错误消息:
项目 ... 引发异常类 $C00000FD 并带有消息“堆栈溢出在 0x006f089e”。
当用户点击按钮时执行的命令是:
Application.HelpContext(HelpContextNumber);
在Launch HTML Help as separate Process中,我读到我应该将OnHelp
事件处理程序附加到 Application 对象。
我保存了帮助单元,但如何附加它?
Application.OnHelp := ....?
解决方案
该TApplication.OnHelp
事件被声明为THelpEvent
:
THelpEvent = function(Command: Word; Data: THelpEventData; var CallHelp: Boolean): Boolean of object;
因此,您需要在表单中声明一个方法,如下所示:
type
TMyForm = class(TForm)
...
private
function MyOnHelpHandler(Command: Word; Data: THelpEventData; var CallHelp: Boolean): Boolean;
...
end;
然后您可以在运行时将该处理程序分配给TApplication.OnHelp
事件,例如:
procedure TMyForm.FormCreate(Sender: TObject);
begin
Application.OnHelp := MyOnHelpHandler;
end;
procedure TMyForm.FormDestroy(Sender: TObject);
begin
Application.OnHelp := nil;
end;
function TMyForm.MyOnHelpHandler(Command: Word; Data: THelpEventData; var CallHelp: Boolean): Boolean;
begin
Result := ...;
end;
或者,您可以TApplicationEvents
在设计时将一个组件拖放到您的表单上,然后OnHelp
使用对象检查器为其创建一个事件处理程序。
推荐阅读
- html - 导航栏 - 在我的 html 文件中不起作用
- ios - xcode ios'没有这样的模块GoogleSignIn'
- reactjs - 在 NextJS 中使用“getStaticPaths”和“getStaticProps”创建动态路由
- docker - tar -xvf 在 dockerfile 中失败
- node.js - 我应该在整个服务器运行期间保留 Sequelize 实例吗?
- objective-c - 在 macOS Objective-C 应用程序中,我将 NSMutableSet 子类化为强制执行不同于 isEqual 的相等性。我的实施好吗?
- sequelize.js - Discord.js sequelize.import 不是函数
- php - 缓存属性og php
- intellij-idea - 如何将 jaspersoft studio 连接到 IntelliJ IDE?
- asp.net-mvc - 列表的自定义验证
数据注释不断显示其他不为空的输入