我想在TSaveDialog中添加一个复选框或其他VCL组件.
坎图说,
新的Vista打开和保存对话框(由IFileOpenDialog和
IFileSaveDialog接口实现)由新的FileOpenDialog和
FileSaveDialog组件直接映射,而标准的OpenDialog和SaveDialog组件
在设置全局UseLatestCommonDialogs时使用新样式.
我不知道这意味着什么(我从未做过任何接口编程......)
而且我不想使用第三方工具.
我刚才在网络搜索中看到它建议我查看TOpenPictureDialog代码并复制它.
在尝试任何路径之前,我想我会在这里寻求一些指导.有关XP到Win7解决方案的任何建议,以独立于Windows版本的方式向现代文件,打开对话框添加复选框?
汤姆
关于TSaveDialog和Delphi的 [ofOverwritePromt]的概念已经存在一个简单的问题,它会在保存对话框中覆盖现有文件.
所以我的问题/场景如下:
TSaveDialog[ofOverwritePromt]在Options所以现在我执行程序并调用对话框.如果我选择WITH MOUSE或KEYBOARD(没有输入)的文件存在,则保存对话框要求我用消息覆盖:
但是,如果我执行相同的操作但输入文件名如'Test'而未指定扩展名,则保存对话框不会确认覆盖.我知道实际上它返回另一个文件名"C:\ Users\xxx\Desktop\Test"而不是"C:\ Users\xxx\Desktop\Test.pdf".如果对话框要求您保存文件,但是您需要键入扩展名,这有点不太好.所以通常我会像这样处理它:
repeat
{ Ask for the file if not silent }
if not dlgSave.Execute then
Exit;
{ Read the filename from the save dialog }
LTempFile := dlgSave.FileName;
if not SameText(ExtractFileExt(LTempFile), '.pdf') then
begin
{ Add the extension }
LTempFile := LTempFile + '.pdf';
{ As we bypassed the overwrite check in dialog do it now }
if FileExists(LTempFile) then
if MsgWarn(Format('%s …Run Code Online (Sandbox Code Playgroud) 在TSaveDialog中,我添加了两种具有相同扩展名的格式:
Format A|*.form
Format B|*.form
Format C|*.diff
Run Code Online (Sandbox Code Playgroud)
现在,我要确定用户选择的格式:
var Ext: String;
begin
if not SaveDialog1.Execute then Exit;
Ext := LowerCase(ExtractFileExt(SaveDialog1.FileName));
Run Code Online (Sandbox Code Playgroud)
这样我可以将“格式B”与“格式C”区分开来,但不能将“格式A”与“格式B”区分开。
我有一个由Delphi 7编写的应用程序,这个应用程序在Windows XP中运行良好.
现在我已经将我的电脑升级到Windows 7,并且除了当我点击执行TOpenDialog和TSaveDialog然后挂起的按钮时,每个都可以正常使用这个应用程序.
在Windows 7中使用delphi 7时有人有这个问题吗?
我有一个带有TSaveDialog的表单.调用Execute函数时,从IDE运行时不会弹出.它确实运行单机时弹出.稍微测试一下,我发现所有TSave/TOpen对话框都不起作用.不工作意味着Execute在False没有弹出窗口的情况下返回(请参阅更新的代码示例:始终弹出消息'False'而不是在Dialog之前).在其它对话框(字体/颜色/等)做的工作.
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute
then ShowMessage ('True')
else ShowMessage ('False');
end;
Run Code Online (Sandbox Code Playgroud)
在没有调试的情况下运行时,对话框也不会出现.选择Release或Debug配置也无关紧要.
显然IDE做了一些奇怪的事情.表单上有两个TSaveDialog组件,两者都显示相同的行为.
知道什么是错的吗?
在Windows 7上使用Delphi XE 更新1.使用TSaveDialogs的其他项目工作正常.
更新2发现有关TSaveDialog的原始问题适用于所有TSave/TOpen对话框.已编辑问题以包含此知识.
更新3我发现此链接出现类似错误.但是,我检查了注册表,但找不到提到的可执行文件.并且改变与XP的兼容性的提示不适用于imho,因为TSaveDialog在IDE之外正常工作.
我希望我的打开和保存对话框显示XML文件.我有这个定义:
// The save dialog
dlg := TSaveDialog.Create(nil);
dlg.Options := [ofOverwritePrompt];
dlg.Title := 'Seleccione la ubicación del archivo';
dlg.Filter := 'Xml | *.xml | Todo | *.*';
dlg.DefaultExt := 'xml';
dlg.Execute();
// The open dialog
dlg := TOpenDialog.Create(self);
dlg.Title := 'Seleccione la ubicación del archivo';
dlg.Filter := 'Xml | *.xml | Todo | *.*';
dlg.DefaultExt := 'xml';
dlg.Execute();
Run Code Online (Sandbox Code Playgroud)
但它不显示XML文件.要在路径中显示任何XML文件,我需要选择"Todo"(*.*)过滤器.选择XML过滤器时为什么不显示文件?
delphi ×6
tsavedialog ×6
topendialog ×2
delphi-2010 ×1
delphi-7 ×1
filter ×1
save-dialog ×1
tcheckbox ×1
windows-7 ×1