我了解如何创建自定义向导页面。只是不确定如何添加文件选择器,并将其限制为.jpg文件类型。我有一个代码部分,在安装结束时运行,在设置过程中获取用户定义的输入并修改设置文件,只需要了解如何获取他们在设置屏幕步骤中选择的文件的值,然后复制它,重命名它,并将其转储到程序文件文件夹中。
答案 0 :(得分:3)
出于文件选择的目的,您应该使用单独的输入文件向导页面,您可以通过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
有关详细信息,我将向您推荐TOpenDialog.Filter
属性的Delphi参考页面。