Does the frShowHelp Work Anymore for Common Dialogs in Delphi?
我试图在Delphi 2009中的"打开,保存,查找和打印"常用对话框上添加一个"帮助"按钮。
我认为正确的方法是在对话框的Options属性中将frShowHelp设置为true:
但是当我这样做时,对话框的出现与没有选项的情况相同,例如:
我希望在"取消"按钮下方看到一个"帮助"按钮,但它不存在。
我正在Windows Vista下开发。 Microsoft是否消除了在其常用对话框中添加"帮助"按钮的功能,还是我做错了什么?
-
TFindDialog是VCL提供的对话框,而不是Microsoft常用对话框; 因此,如果发生任何故障,可能不是因为Microsoft。
-
那不是真的。 TFindDialog是Microsoft查找对话框的包装。
-
请参阅:msdn.microsoft.com/en-us/library/ms646956.aspx
-
正确@Remy,这是指向Microsoft"自定义通用对话框"文档的链接,该文档似乎表明Flags中的SHOWHELP值应该起作用。 请参阅文档底部的"帮助按钮"部分:msdn.microsoft.com/en-us/library/windows/desktop/
-
这里有问题。 设置frShowHelp时,我在查找对话框中看到帮助按钮。 我从一个香草项目开始,添加了TFindDialog,添加了frShowHelp选项并调用了FindDialog1.Execute(0)。 D2010和DXE2上显示帮助按钮。 Windows 7 x64。
-
对于这两个文件对话框,新的Vista对话框没有内置帮助选项。 您需要使用IFileDialogCustomize自己实现
查找对话框
在Options中包含frShowHelp,将显示帮助按钮。 很难理解为什么这对您不起作用。
打印对话框
在Options中包含poHelp,将显示帮助按钮。
文件对话框
现在,在引入Vista时,这些确实发生了变化。 新对话框没有内置的显示帮助按钮的功能。
通过将Dialogs.UseLatestCommonDialogs设置为False,您始终可以恢复到旧版XP对话框。 如果这样做,可以设置ofShowHelp,HelpContext等。
如果有可用的话,您应该首选使用新对话框。 对于这些对话框,您需要使用IFileDialogCustomize添加帮助按钮。
在Delphi中,对于Vista及更高版本,您需要直接使用TFileOpenDialog或TFileSaveDialog而不是TOpenDialog和TSaveDialog。 您将创建对话框对象,然后从Dialog属性请求IFileDialogCustomize接口。 最佳方法是在对话框控件的DoExecute事件中。
1 2 3 4 5 6 7
| procedure TForm1.FileOpenDialog1Execute(Sender: TObject);
var
FileDialogCustomize: IFileDialogCustomize;
begin
FileDialogCustomize := FileOpenDialog1.Dialog as IFileDialogCustomize;
FileDialogCustomize.AddPushButton(0, 'Help');
end; |
-
添加poHelp后,我确实确认"帮助"按钮确实出现在"打印"对话框中。 显然,它使用了另一种机制,即poHelp而不是frShowHelp。 我已经针对我的问题测试了"查找"和"打开"对话框,并假设"保存"和"打印"将是相同的。 但是当我包含frShowHelp时,我的"查找对话框"未显示"帮助"按钮。 我的所作所为必须有所不同。 因此,考虑到这一点,病态研究会更多。
-
我能够将"帮助"按钮显示在另一个项目中。 但是,即使有了新的FindFile对话框,它也不会成为我的应用程序。 仍在研究中...
-
这是令人难以置信。 在"查找"对话框上找到"帮助"按钮后,另一个项目。 我回到我的项目,然后再试一次。 令我惊讶的是,现在出现了"帮助"按钮! 我知道在前两次尝试中还没有。 我不知道为什么这个解决了。 但这至少现在是有效的。