[delphi-users:5178] TShellTreeViewについてお尋ね

35 views
Skip to first unread message

nagao

unread,
May 28, 2019, 4:30:55 AM5/28/19
to delphi...@freeml.com
nagaoです。
いつも教えて頂きありがとうございます。

Delphi 10.1Berlin + Windows10の環境でForm2に
ShellTreeView1: TShellTreeView;
を配置し、予め例えば、
Form2.ShellTreeView1.path:='D:\工事写真';
のデーターを渡した上で、
Form2.ShowModal;
を実施すると、
Form2側ではShellTreeView1.path='D:\工事写真';
と正しくデータが渡された状態でForm2が表示されてきますが、例えば
Form2.ShellTreeView1.path:='\\landisk-new\disk1\新宿区役所\福祉課\大久保第一保育園\201905_コンセント\工事写真';
のデーターを渡した上で、
Form2.ShowModal;
を実施した場合は、
Form2側ではShellTreeView1.path='';
となっていて、正しくデータが渡されませんので、ShellTreeView1には
デスクトップが選択された状態でForm2が表示されてきます。

インターネットで調べてみましたが、関連する記事は見つけ得ませんでした。
この不具合を解消する方法があればお教え願います。




MLホームページ: https://www.freeml.com/delphi-users

----------------------------------------------------------------------
スマホアプリ版で100万ダウンロード突破の
「キャプテン翼ZERO~決めろ!ミラクルシュート~」
HTML5ゲームプラットフォーム「ゲソてん byGMO」にて、
PCブラウザ版を好評配信中!
https://gesoten.com/games/genre/sports/tsubasa-zero
------------------------------------------------------[freeml byGMO]--

あなたの街のチラシがいつでも無料で見放題!
チラシをクリックしてチラシが拡大されたらポイントゲット♪
まずはかんたん登録♪ -ポイントタウン-
https://www.pointtown.com/ptu/rd.cgi?cid=8912
----------------------------------------------------------------------

OE

unread,
May 29, 2019, 9:41:58 PM5/29/19
to delphi...@freeml.com
はじめまして、こんにちは。
OEです。

こんな便利なツリービュー機能があったんですね。
良い情報に感謝し、今後私も活用しそうなので検証してみました。
なお、根本的な解決策では無いです、申し訳ありません。

[環境]開発:Delphi10 Seattle、クライアント:Win10
[コード]
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellTreeView1.Path:='(パス名)' ;
ShowMessage(ShellTreeView1.path);
end;


1.(パス名)がドライブレター付きの場合。
  一瞬で表示され、ShowMessage内容も正しい

2.(パス名)が\\で始まるパスの場合。
  時間が掛かるが表示される場合と、待ってもされない場合がある。
  その違いが出る理由/違いは未確認。
  どこかにTimeOut値がありそう(探してません)。
  
3.上記2でもネットワークドライブ接続してやると、
  一瞬で表示され、ShowMessage内容も正しい


ということで...
エクスプローラーのパス欄に\\パスを入力した時と同じように
2の場合は表示までに時間がかかるので、自分は3方式に逃げました。

OE

unread,
May 29, 2019, 9:53:39 PM5/29/19
to delphi...@freeml.com
追記です。

>2.(パス名)が\\で始まるパスの場合。
>  時間が掛かるが表示される場合と、待ってもされない場合がある。
>  その違いが出る理由/違いは未確認。
>  どこかにTimeOut値がありそう(探してません)。

接続先がWindowsサーバーだと、
時間が掛かるが表示される場合と待ってもされない場合がありました。

一方Smaba(NAS)では5回ほど実行しましたが1度も表示されませんでした。


何かサーバー側の設定で変わるのかもしれませんが、
知識不足でよくわかりません。

nagao

unread,
May 30, 2019, 4:52:56 AM5/30/19
to delphi...@freeml.com
OEさん、こんにちは。nagaoです。
  
> 3.上記2でもネットワークドライブ接続してやると、
>   一瞬で表示され、ShowMessage内容も正しい
私の方でもネットワーク接続でやってみた所、期待どうりに動作しました。
レスくださいまして本当にありがとうございました。

Terry

unread,
May 30, 2019, 9:28:08 AM5/30/19
to delphi...@freeml.com
nagao さん、こんにちは。

私の場合 DirectoryExists を挟んでやると上手くいくことがありました

dacho

unread,
May 30, 2019, 9:53:14 AM5/30/19
to delphi...@freeml.com
こんにちは。

>> 3.上記2でもネットワークドライブ接続してやると、
>>   一瞬で表示され、ShowMessage内容も正しい
>私の方でもネットワーク接続でやってみた所、期待どうりに動作しました。

これはアプリを起動する前にひと手間あるということでしょうか?
それでしたらWindows APIの WNetUseConnection を使ってみては
いかがでしょうか。
ユーザー名・パスワードを設定するかどうかで使用環境に合わない
場合もあるかもしれませんが。

dacho

unread,
May 30, 2019, 10:00:50 AM5/30/19
to delphi...@freeml.com

>それでしたらWindows APIの WNetUseConnection を使ってみては
>いかがでしょうか。
>ユーザー名・パスワードを設定するかどうかで使用環境に合わない
>場合もあるかもしれませんが。

ちょっと説明不足でした。

私の場合はDelphiではなくVC++なのですが、
パスが'\\'で始まり、PathFileExists で存在しない場合に
NetResConnect で接続する、という流れで使用しています。
Reply all
Reply to author
Forward
0 new messages