我正在使用带有TNT控件的Delphi7。有没有办法在Win7上调用现代的打开/保存对话框?也许是VCL的补丁,TNT的补丁?TNT补丁是首选,因为我需要Unicode感知对话框,但VCL补丁也可能需要(更少)。
发布于 2013-05-17 02:16:25
最简单的方法可能是直接调用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;当然,您可以对其进行扩展以获得更多功能。
https://stackoverflow.com/questions/16594014
复制相似问题