【发布时间】:2014-06-27 14:48:18
【问题描述】:
我了解如何创建自定义向导页面。只是不确定如何添加文件选择器,并将其限制为 .jpg 文件类型。我有一个在安装结束时运行的代码部分,用于在安装过程中获取用户定义的输入并修改设置文件,只需要了解如何获取他们在设置屏幕步骤中选择的文件的值,然后复制它,重命名,然后转储到程序文件夹中。
【问题讨论】:
标签: file-io inno-setup
我了解如何创建自定义向导页面。只是不确定如何添加文件选择器,并将其限制为 .jpg 文件类型。我有一个在安装结束时运行的代码部分,用于在安装过程中获取用户定义的输入并修改设置文件,只需要了解如何获取他们在设置屏幕步骤中选择的文件的值,然后复制它,重命名,然后转储到程序文件夹中。
【问题讨论】:
标签: file-io inno-setup
为了选择文件,您应该使用单独的输入文件向导页面,您可以通过CreateInputFilePage 创建该页面。然后,TInputFileWizardPage 页面对象类的Add 方法包含AFilter 参数,您可以在其中指定可以通过其关联的文件打开对话框选择的文件的过滤器。在这个例子中,我们只允许用户选择 *.jpg 文件:
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
[Code]
var
InputPage: TInputFileWizardPage;
procedure InitializeWizard;
begin
// create the input file wizard page
InputPage := CreateInputFilePage(wpWelcome, 'Caption', 'Description',
'SubCaption');
// and insert one item in which the user will be restricted to select
// only *.jpg files
InputPage.Add('Prompt', 'JPG files (*.jpg)|*.jpg', '.jpg');
end;
如果该输入文件向导页面不适合您的设计并且您想自己制作,那么您需要GetOpenFileName 函数来显示打开文件对话框。甚至这个函数也包含一个参数,您可以在其中指定过滤器字符串。在这种情况下,它是 Filter 参数。在这个脚本示例中,如何使用 *.jpg 文件过滤器调用文件打开对话框:
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
[Code]
procedure InitializeWizard;
var
FileName: string;
begin
if GetOpenFileName('Prompt', FileName, 'C:\InitialDirectory',
'JPG files (*.jpg)|*.jpg', '.jpg')
then
MsgBox(Format('Selected file: %s', [FileName]), mbInformation, MB_OK);
end;
正如您在上面的代码中看到的,过滤器字符串由标题部分和过滤部分组成,由| 字符分隔。您还可以通过| 字符分隔每个过滤器字符串来指定多个过滤器,或者您可以通过; 分隔扩展名来为单个过滤器指定多个扩展名。
所以,例如创建一个名为 JPG files 的过滤器,仅过滤您可以编写的 *.jpg 文件:
JPG files|*.jpg
要制作两个过滤器,假设一个用于 *.jpg 文件,一个用于您可以编写的 *.jpeg 文件:
JPG files|*.jpg|JPEG files|*.jpeg
最后,要为 *.jpg 和 *.jpeg 文件创建一个过滤器,您可以编写:
JPEG files|*.jpg;*.jpeg
有关详细信息,我建议您参考 Delphi 参考页面中的 TOpenDialog.Filter 属性。
【讨论】: