喫茶XRAYトップページ

[スレッド全体
]

[5059] TplExplorerFolderTreeにて返信 削除
2011/8/1 (月) 21:17:08 Sara
マスター いつもお世話になっております。 Saraです。

TplExplorerFolderTreeを1つだけフォームに置いて、

procedure TForm1.FormCreate(Sender: TObject);
begin
     with plExplorerFolderTree1 do begin
        Align := alClient;
        ShowItemStyle := SHCONTF_FOLDERS;
        RootFolder := '';
     end;
end;

とします。

そののち、F9(実行)をしてplExplorerFolderTree上で
なにかフォルダーを選択して右クリックすると・・・
異常終了します・・・

ちなみに、デバッグなしで実行だと異常終了しません・・・

ゆえに、この機能の先にある不具合のデバッグができません
(まぁできないこともないんだけど、無駄に時間が・・・)

回避策とかあったりしませんかね・・・(^^;

ちなみに環境は、Delphi2010+Windows7 Ultimate 64Bitです。
(まぁ、家の環境の問題という可能性もあるんですが・・・)

[5117] Re:TplExplorerFolderTreeにて返信 削除
2011/8/11 (木) 00:09:55 Mr.XRAY
▼ Saraさん,お待たせしています.

> 回避策とかあったりしませんかね・・・(^^;

これはですね.実はよく分からないのですよ(汗).
実際には,参照カウンタがおかしいのでしょうけど,オブジェクト
(インターフェイス)の生成時に,自動でインクリメント,デクリメント
してくれるハズなんですが,う〜ん.(AddRefとかいう関数です)
じっくり調べるしかないですね.
自動でやってくれないなら,処理コード追加ですね.

いけない,思い出しました.参照カウンタがおかしいサンプルが
いくつかあるのですが,まだ修正していないのがあります.
もし正常動作していても,たまたま動作しているだけですね.
近いうちに,このTplExplorerFolderTreeも含めて修正します.
(例によって,いつになることやら)

このあたりは,実際に作成した本人(つまり,この私)じゃないと追跡
が難しいこともありますので,何とも... ハハハッ
えっ,笑ってごまかすな!?


[5119] Re2:TplExplorerFolderTreeにて返信 削除
2011/8/11 (木) 09:26:45 Sara
▼ Mr.XRAYさん

> 近いうちに,このTplExplorerFolderTreeも含めて修正します.
> (例によって,いつになることやら)

了解しました。よろしくお願いします。m(_ _)m
と いいつつ、Delphi Xeに移行したので、実害がありませんが・・・(^^;
おかげで、いくつかの不具合を見つけるきっかけになりました。(^^;

今は、WindowsXP or Windows2000で動かす場合にShellTreeViewで
マイネットワークの+をクリックした時の動作をどうにかしたいです・・・
(全然ネットワーク一覧が表示されないというか、遅すぎるというか)

直接NAS等のフォルダを参照するようにフォルダ名を指定しても反応が
返ってくるのが非常におそくて・・・使い物になっていない・・

いくつか他の方がつくられているコンポーネントも試してみたのですが、
同じような感じなんですよね・・・

そこへいくと、TplExplorerFolderTreeは、ネットワークの部分も含めて
快適に動作します。(^^)V
(+で一覧表示されないこともありますが、フォルダ名を直接入力すると
 該当ホストのフォルダ構造を極めて高速にTreeを生成して表示してくれる)

WindowsXPとWindows2000で動作不能なのが惜しまれる・・・


[5121] Re3:TplExplorerFolderTreeにて返信 削除
2011/8/11 (木) 09:49:59 Mr.XRAY
▼ Saraさん

> WindowsXPとWindows2000で動作不能なのが惜しまれる・・・

そうなんですよね.Windows 2000で動作するシェルのインターフェイス
では期待する動作してくれないんです.

> おかげで、いくつかの不具合を見つけるきっかけになりました。(^^;

当方もです.その意味ではサンクスなんですが...

> 今は、WindowsXP or Windows2000で動かす場合にShellTreeViewで
> マイネットワークの+をクリックした時の動作をどうにかしたいです・・・
> (全然ネットワーク一覧が表示されないというか、遅すぎるというか)


> 直接NAS等のフォルダを参照するようにフォルダ名を指定しても反応が
> 返ってくるのが非常におそくて・・・使い物になっていない・・


何か方法がないのかと思うのですが,なんとも.
そこで,試しに,サンプルのTplExplorerFolderTree等を試しに作ってみたんです.
シェルインターフェイスを使うと速いのですが,これはマイクロソフトが
提供している機能ですから,当たり前と言えば当たり前なんでしょうね.

ファイルのリストや,フォルダツリー表示の機能は,アプリでの実装という
は結構需要があると思うのです.マイクロソフトさんは,何故このあたりの
インターフェイスをしっかりやってくれなかったのでしょう.
もしかして,わざと?


[5122] Re4:TplExplorerFolderTreeにて返信 削除
2011/8/11 (木) 10:24:13 Sara
▼ Mr.XRAYさん

> ファイルのリストや,フォルダツリー表示の機能は,アプリでの実装という
> は結構需要があると思うのです.マイクロソフトさんは,何故このあたりの
> インターフェイスをしっかりやってくれなかったのでしょう.
> もしかして,わざと?


ありえる・・・(^^;


それはさておき、SHBrowseForFolderをフォーム上に表示させることって
できませんかね・・・(^^;(無茶振り?)

あれなら、我慢できる程度の時間で反応があるのですが・・・
ダイアログぢゃぁなぁ・・・

[5123] Re5:TplExplorerFolderTreeにて返信 削除
2011/8/11 (木) 23:40:16 Mr.XRAY
▼ Saraさん,どうも.出かけていたもので.

> それはさておき、SHBrowseForFolderをフォーム上に表示させることって
> できませんかね・・・(^^;(無茶振り?)


いえ,これできなくはないのですが,えーと,ちょっと待ってください.
何か不具合があったような記憶があります.
あるいは,Windows 2000以前でないと正常に表示できなかったかです.
OSによって,このSHBrowseForFolderは,表示コントロール等に微妙に
違いがあります.
また,選択したフォルダを,コールバック関数から取得するのですが,
結構面倒です.
いずれにしても,おそらくかなり無理があると思います.

ファイル関連ダイアログコンポーネント
http://mrxray.on.coocan.jp/Delphi/plFileDialog/plFileDialog.htm

これを作る時に,テストしました.

> あれなら、我慢できる程度の時間で反応があるのですが・・・
> ダイアログぢゃぁなぁ・・・


なるほど.う〜む.
テスト的な作成中のシェルフォルダツリーはあるのですが,もう何年も
放置したままです.これを改良して... うまくいくわけないか...


[5124] Re6:TplExplorerFolderTreeにて返信 削除
2011/8/11 (木) 23:52:39 Mr.XRAY
> テスト的な作成中のシェルフォルダツリーはあるのですが,もう何年も
> 放置したままです.これを改良して... うまくいくわけないか...


あっ,ダメです.Windows 2000以前は対象外のコードです.(^^;


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82