我使用Delphi7和TNT控件。有没有办法在Win7上调用现代的打开/保存对话框?也许是VCL的补丁,TNT补丁? TNT补丁是首选,因为我需要Unicode感知对话框,但也可能需要(更少)VCL补丁。
答案 0 :(得分:3)
最简单的方法可能是直接调用API函数GetOpenFileName
和GetSaveFileName
。除非你使用一些更深奥的功能,否则这些将在Vista及更高版本上显示现代对话框。
显然你需要调用W变种,并传递结构的W版本。
这是我可以构建的最简单的例子:
var
ofn: TOpenFilenameW;
FileName: array [0..MAX_PATH-1] of WideChar;
begin
FillChar(ofn, SizeOf(ofn), 0);
ofn.lStructSize := SizeOf(ofn);
ofn.hWndOwner := Handle;
ofn.lpstrFilter := 'All files'#0'*.*'#0;
FileName[0] := #0;
ofn.lpstrFile := @FileName;
ofn.nMaxFile := Length(FileName);
ofn.lpstrTitle := 'Select File';
if GetOpenFileNameW(ofn) then
MessageBoxW(Handle, FileName, nil, MB_OK);
end;
当然,您可以扩展它以获得更多功能。