我使用带有 TNT 控件的 Delphi7。有没有办法在 Win7 上调用现代打开/保存对话框?也许是 VCL 的补丁,TNT 的补丁?TNT 补丁是首选,因为我需要 Unicode 感知对话框,但也可能需要(更少)VCL 补丁。
问问题
1073 次
1 回答
3
GetOpenFileName
可能最简单的方法是直接调用 API 函数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;
当然,您可以扩展它以具有更多功能。
于 2013-05-16T18:16:25.430 回答