2017-05-29 5 views

答えて

1

BrowseForFolder機能によって開かれたダイアログは、残念ながらオーナーウィンドウとしてWizardFormを持つように実装されています。これは、WizardFormの背後にある他の開いているダイアログをすべて効果的に移動しますが、「ブラウズ」ダイアログが表示されます(ダイアログは非表示ではなく、WizardFormによって隠されています)。

あなたは何ができるか

:ゼロから

  • 再実装しBrowseForFolder。それは大きな仕事です。
  • I have suggested you at the very beginningの代わりにCreateInputDirPageをソリューションの代わりに使用できます。
    たとえば、Inno Setup How to show network on a browse dialog?
    を参照してください。これで、別のフォルダに異なるファイルを許可する必要があることがわかったので、これはもう最善の解決策ではないかもしれません。
  • 回避策として、あなたはBrowseForFolderの問題が生じないよう、TInputDirWizardPageによって異なる参照ダイアログの実装を悪用することができます。

    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; 
    

    enter image description here

関連する問題