我正在使用这段代码:Inno Setup - 如何创建自定义表单以允许我找到要解压缩的文件? https://stackoverflow.com/questions/44145316/inno-setup-how-to-create-a-custom-form-that-allows-me-to-locate-the-files-to-d/44214348?noredirect=1#comment75503426_44214348如何从另一个对话框打开目录浏览对话框而不隐藏它?
打开的对话框BrowseForFolder https://jrsoftware.org/ishelp/index.php?topic=isxfunc_browseforfolder不幸的是,函数被实现为具有WizardForm
作为业主窗口。这有效地将所有其他打开的对话框移到了后面WizardForm
,同时显示“浏览”对话框(请注意,这些对话框并未隐藏,它们只是被WizardForm
).
你可以做什么:
-
重新实施BrowseForFolder
从头开始。这是一项艰巨的任务。
-
您可以使用CreateInputDirPage https://jrsoftware.org/ishelp/index.php?topic=isxfunc_createinputdirpage而不是你的解决方案,我在你的一开始就建议你上一个问题 https://stackoverflow.com/q/44145316/850848.
有关示例,请参见Inno Setup 如何在浏览对话框中显示网络? https://stackoverflow.com/q/39096540/850848
尽管我必须承认,现在我明白了,您需要允许不同的文件夹中存在不同的文件,但这可能不再是最好的解决方案。
-
作为解决方法,您可以通过以下方式滥用不同的浏览对话框实现:,这不会遇到问题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();
var
NewFolderName: string;
begin
NewFolderName := SetupMessage(msgButtonNewFolder);
FakePage := CreateInputDirPage(wpWelcome, '', '', '', False, NewFolderName);
FakePage.Add('');
end;
function ShouldSkipPage(PageID: Integer): Boolean;
begin
Result := (PageID = FakePage.ID);
end;
Use BrowseForFolderEx
代替BrowseForFolder
.
procedure SelectFileBrowseButtonClick(Sender: TObject);
var
Dir: string;
begin
Dir := GetSelectFilePath;
BrowseForFolderEx(Dir);
SelectFilePathEdit.Text := AddBackslash(Dir);
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)