在显示保存对话框时,我想挂钩用户的过滤器类型更改并自动更改文件扩展名。(例如,像 MSPaint 的“另存为”操作。)
使用 TSaveDialog 并设置 UseLatestCommonDialogs := False,我可以通过以下代码处理此问题。(当然,没有最新的通用对话框支持。)
procedure TForm1.SaveDialog1TypeChange(Sender: TObject);
var
FName, Ext: string;
begin
with TSaveDialog(Sender) do
begin
if DirectoryExists(FileName) then // FileName is Empty
exit;
case FilterIndex of
1: Ext := '.png';
2: Ext := '.bmp';
3: Ext := '.jpg';
end;
FName := ChangeFileExt(ExtractFileName(FileName), Ext);
SendMessage(Windows.GetParent(Handle), CDM_SETCONTROLTEXT, 1152, LongInt(PChar(FName)));
end;
end;
我想用 Delphi 2007 同时支持 XP 和 vista/7。
我应该使用 TFileSaveDialog 而不是带有内部包装的 TSaveDialog 吗?(而且我必须为使用IFileDialogControlEvents的 COM 编程而苦苦挣扎?)
或者我可以用 TFileSaveDialog 实现这一点,它只是标准属性?(我的开发环境还在XP机器上,所以没试过。抱歉。)
我认为这是非常常见的任务,但我找不到任何支持 Vista/7 的示例代码......