我正在使用此代码:Inno Setup - How to create a custom form that allows me to locate the files to decompress?。如何从另一个对话框打开目录浏览对话框而不隐藏它?
答案 0 :(得分:1)
遗憾的是,BrowseForFolder
函数打开的对话框实现了WizardForm
作为所有者窗口。这有效地移动了WizardForm
后面的所有其他打开的对话框,而#34;浏览"对话框正在显示(请注意,对话框未隐藏,它们只是被WizardForm
遮挡了。)
你能做什么:
BrowseForFolder
。这是一项艰巨的任务。CreateInputDirPage
代替您的解决方案I have suggested you at the very beginning
有关示例,请参阅Inno Setup How to show network on a browse dialog? 作为一种变通方法,您可以滥用TInputDirWizardPage
的不同浏览对话框实施,但不会遇到BrowseForFolder
的问题:
var
FakePage: TInputDirWizardPage;
procedure BrowseForFolderEx(var Directory: String);
begin
FakePage.Values[0] := Directory;
FakePage.Buttons[0].OnClick(FakePage.Buttons[0]);
Directory := FakePage.Values[0];
end;
procedure InitializeWizard();
begin
FakePage :=
CreateInputDirPage(wpWelcome, '', '', '', False, SetupMessage(msgButtonNewFolder));
FakePage.Add('');
end;
function ShouldSkipPage(PageID: Integer): Boolean;
begin
Result := (PageID = FakePage.ID);
end;
使用BrowseForFolderEx
代替BrowseForFolder
。
procedure SelectFileBrowseButtonClick(Sender: TObject);
var
Dir: string;
begin
Dir := GetSelectFilePath;
BrowseForFolderEx(Dir);
SelectFilePathEdit.Text := AddBackslash(Dir);
end;