TurboPack Virtual Shell Toolsに含まれる「TVirtualExplorerCombobox」のフリーズ現象を修正するには


maya  2025-03-15 19:23:35  No: 151875

 いつもお世話になっております。Delphiの有名なファイラーを作るコンポーネントである
TurboPack Virtual Shell Toolsに含まれる「TVirtualExplorerCombobox」の挙動について
質問させてください。

(Win10 + Delphi 12 Community)

 上記部品は、Windows標準のエクスプローラーの上の方についているような、ファイル
パスを表示させる部品です。

 このコンポーネントについて、下記の操作を行うと、長時間固まったようにフリーズして
アプリが動かなくなります。

①FormにVirtualExplorerCombobox1を配置。
②プロパティを2つ変更。
 ・Active := True
 ・TextType := ecbtFullPath;
③アプリを実行し、VirtualExplorerCombobox1の内容をクリア。
 実在するフォルダーのパスをコピー&ペーストして、エンターキーを押すと固まる。

 このフリーズをなくす場合、どのようにすればよいか、情報をお持ちの方はお教えいた
だけますでしょうか。何卒よろしくお願いいたします。(ここ1週間、どのように解決
すべきかずっと悩んでおりますが、コンポーネントのコード量が多く、現実的に検証がう
まくできておりません。)


maya  2025-03-16 09:47:42  No: 151876

1点補足させていただきます。
Virtual Shell Toolsは、以下のものです。DelphiのGetItからのインストールにも
対応しており、実際にはそちらからインストールして使用しています。

https://github.com/TurboPack/MustangpeakVirtualshellTools


vram  2025-03-17 09:53:24  No: 151877

使用したことはありませんが、実在するフォルダーのパスを別のもの(C:\などのルート)にすると変化はありますか?
マイドキュメント内やネットワーク上のフォルダのパスを取得するのに失敗している可能性があります

一番良いのはコンポーネント内でブレイクポイントで止めてフリーズしている箇所を探すことかと思います


AAAAA  2025-03-18 16:28:44  No: 151878

procedure TDropDownWnd.DropDownMessageLoop;
の感じがする


maya  2025-03-27 12:27:53  No: 151900

回答をいただいたにもか変わらず、お時間がたってしまい申し訳ありません。
少し時間をいただいて検証をしておりました。
フリーズはローカルにあるフォルダでも発生していました。
この部品はコンボボックス状になっているのですが、パスを入力する際、メニューがドロップダウン(開く)します。
この部品のプロパティにはdragmanagerというクラスがあり、そこでenabledを設定できます。
これをfalseに設定すると、ドロップメニューが開かなくなり、症状が大幅に軽減されました。
ただ、100%フリーズしないかと言うとそういう訳でもないため、現在は引き続き動作確認を行なっています。


aaaaa  2025-03-28 02:48:12  No: 151901

    //if GetMessage(Msg, 0, 0, 0) = True then
  while  GetMessage(Msg, 0, 0, 0) and (psRolledDown in FPopupStates) do
 を

 while psRolledDown in FPopupStates do
 begin
   if GetMessage(Msg, 0, 0, 0) = True then
  while  GetMessage(Msg, 0, 0, 0) and (psRolledDown in FPopupStates) do
  begin
  end
end
RollUp(False); //閉じない時があるので強制

終了時にエラーが出るようになるんだけどw


maya  2025-03-28 20:13:10  No: 151904

aaaaa様、わざわざコードを書いてくださり、誠にありがとうございます。該当箇所がわかるだけでも本当に助かります。今晩、該当部分を眺めてみて、フリーズが改善するか、やってみたいと思います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加