适用于Delphi 7应用程序的现代Win7打开/保存对话框

时间:2013-05-16 17:41:19

标签: delphi delphi-7

我使用Delphi7和TNT控件。有没有办法在Win7上调用现代的打开/保存对话框?也许是VCL的补丁,TNT补丁? TNT补丁是首选,因为我需要Unicode感知对话框,但也可能需要(更少)VCL补丁。

1 个答案:

答案 0 :(得分:3)

最简单的方法可能是直接调用API函数GetOpenFileNameGetSaveFileName。除非你使用一些更深奥的功能,否则这些将在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;

当然,您可以扩展它以获得更多功能。