有没有办法可以强制帮助问号按钮在Delphi 2010中不是对话框的表单上显示?
我想使用帮助问号,以便用户可以单击它然后转到控件,但默认情况下它仅在边框样式为对话框时可用,但我们的应用程序不使用对话框窗体
我正在考虑覆盖CreateParams程序,但我不确定要用什么代码来强制按钮显示?
保
答案 0 :(得分:6)
根据MSDN,这不是特定于Delphi的限制,但它是由WinAPI强加的。如您所知,帮助问号由WS_EX_CONTEXTHELP样式打开,该样式不能与WS_MAXIMIZEBOX和WS_MINIMIZEBOX样式组合使用。因此,如果表单没有最大化并最小化其标题中的按钮,则可以使用非对话框形式并显示问号。如果您还需要最大化和最小化按钮,那么我认为您应该对窗口进行子类化并提供自定义非客户端绘制(自己绘制问号)和非客户端命中测试处理。
答案 1 :(得分:0)
您想在非模态窗口的顶部(抓取器)非客户区域中显示一个帮助按钮,该窗口旁边显示最大化和最小化?
在表单上使用TJvCaptionButton(包含在JEDI VCL中),在控件按钮上放置一个帮助问号位图,然后从整数帮助上下文中打开对特定页面的帮助,如下所示:
Application.HelpContext(aHelpContext);
因为它在窗口的非客户区域中绘制,所以在某些Windows主题设置上可能会遇到一些奇怪的行为;例如,我不认为Jedi JvCaptionButtons在启用Aero的Win7上看起来很原生。
更新以下评论中的链接问题提到将表单放入这样的帮助模式,由DavidH提供:
SendMessage(Handle, WM_SYSCOMMAND, SC_CONTEXTHELP, 0);
端;