标签: tsavedialog

如何在Delphi 2010中为TSaveDialog添加一个复选框

我想在TSaveDialog中添加一个复选框或其他VCL组件.

坎图说,

新的Vista打开和保存对话框(由IFileOpenDialog和
IFileSaveDialog接口实现)由新的FileOpenDialog和
FileSaveDialog组件直接映射,而标准的OpenDialog和SaveDialog组件
在设置全局UseLatestCommonDialogs时使用新样式.

我不知道这意味着什么(我从未做过任何接口编程......)

而且我不想使用第三方工具.

我刚才在网络搜索中看到它建议我查看TOpenPictureDialog代码并复制它.

在尝试任何路径之前,我想我会在这里寻求一些指导.有关XP到Win7解决方案的任何建议,以独立于Windows版本的方式向现代文件,打开对话框添加复选框?

汤姆

delphi delphi-2010 tcheckbox tsavedialog

10
推荐指数
2
解决办法
2123
查看次数

TSaveDialog文件扩展名和[ofOverwritePromt]问题

关于TSaveDialog和Delphi的 [ofOverwritePromt]的概念已经存在一个简单的问题,它会在保存对话框中覆盖现有文件.

所以我的问题/场景如下:

  • 我有一个 TSaveDialog
  • 我设置了[ofOverwritePromt]在Options
  • 我将过滤器设置为"PDF(*.pdf)|*.pdf"
  • 过滤器索引设置为1

所以现在我执行程序并调用对话框.如果我选择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)

delphi tsavedialog

8
推荐指数
1
解决办法
1824
查看次数

TSaveDialog和2种具有相同扩展名的格式

在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 save-dialog tsavedialog

5
推荐指数
2
解决办法
120
查看次数

在Windows 7中打开/保存对话框时应用程序挂起

我有一个由Delphi 7编写的应用程序,这个应用程序在Windows XP中运行良好.

现在我已经将我的电脑升级到Windows 7,并且除了当我点击执行TOpenDialog和TSaveDialog然后挂起的按钮时,每个都可以正常使用这个应用程序.

在Windows 7中使用delphi 7时有人有这个问题吗?

delphi delphi-7 topendialog windows-7 tsavedialog

4
推荐指数
1
解决办法
2984
查看次数

标准对话框不会弹出

我有一个带有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之外正常工作.

delphi tsavedialog

2
推荐指数
1
解决办法
1111
查看次数

为什么打开和保存对话框不显示与所选过滤器匹配的文件?

我希望我的打开和保存对话框显示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 filter topendialog tsavedialog

2
推荐指数
1
解决办法
1071
查看次数