delphi – (保存对话框)如何在Vista / Win7中更改文件过滤器时自
发布时间:2020-12-15 04:05:30 所属栏目:大数据 来源:网络整理
导读:在显示保存对话框时,我想挂钩用户的过滤器类型更改并自动更改文件扩展名. (例如像MSPaint的“另存为”操作.) 使用TSaveDialog并设置UseLatestCommonDialogs:= False, 我可以通过以下代码处理此问题. (没有最新的公共对话支持,cource.) procedure TForm1.Sav
在显示保存对话框时,我想挂钩用户的过滤器类型更改并自动更改文件扩展名. (例如像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与内部包装? 或者我可以用TFileSaveDialog实现这一点,它只是标准属性吗? 我认为这是非常常见的任务,但我找不到任何支持Vista / 7的示例代码…… 解决方法
据我所知,TFileSaveDialog将在XP上引发异常.它需要Vista或更高版本.
更新:TFileSaveDialog的一些D2010代码改编自您的事件处理程序…. procedure TForm1.FileSaveDialog1TypeChange(Sender: TObject); var FName,Ext: string; pName: PChar; begin with TFileSaveDialog(Sender) do begin if DirectoryExists(FileName) then // FileName is Empty exit; case FileTypeIndex of 1: Ext := '.png'; 2: Ext := '.bmp'; 3: Ext := '.jpg'; end; Dialog.GetFileName(pName); FName := ChangeFileExt(ExtractFileName(pName),Ext); Dialog.SetFileName(PChar(FName)); end; end; FileSaveDialog的位置是: object FileSaveDialog1: TFileSaveDialog FavoriteLinks = <> FileTypes = < item DisplayName = 'png files' FileMask = '*.png' end item DisplayName = 'bmp files' FileMask = '*.bmp' end item DisplayName = 'jpg files' FileMask = '*.jpg' end> Options = [] OnTypeChange = FileSaveDialog1TypeChange end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |