And*_*y k 5 delphi delphi-2007
此问题仅发生在先前在Delphi 7下设计并迁移到在WinXP上运行的Delphi 2007的应用程序上.
我试了好几年才把这个问题整理好,没有运气.
据我所知,Topendialog是一个Win32对话框包装器,它应该继承windows文件夹选项,在我的例子中,它设置为显示所有文件的文件扩展名.
现在,如果我创建一个新的应用程序并在其上放置一个Topendialog,当它运行时,它会按预期显示文件扩展名.
如果我将相同的对话框拖放到现有应用程序并运行,它不会显示文件扩展名.
如果我在调用对话框之前在filename属性中将文件名字符串写入'Myfile.txt',则当显示对话框时,文件名显示为"Myfile",扩展名不会显示,也不会显示任何文件列表.
有没有其他人看起来这种行为?
有人有任何变通方法吗?
编辑:图像上传到新项目和现有项目之间的Topendialog之间的差异.


好的,我有一个解决这个问题的方法。
事实证明,在正确的位置调用 SHGetSettings 实际上可以阻止问题的发生。
因此,解决方法是在一开始就将其放入项目源中。
例如
节目废话;
用途
表格,shlobj,
等等
{$R *.TLB}
{$R *.RES}
var ShellFlags:TShellFlagState;
开始
SHGetSettings(ShellFlags,SSF_SHOWEXTENSIONS); ……
我不知道为什么这使它起作用,它不应该有任何区别,因为它只是一个查询,但它起作用。
因此,感谢 Justmade 建议进行 API 调用。
| 归档时间: |
|
| 查看次数: |
337 次 |
| 最近记录: |