■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#324-0エクスプローラ左窓の様なフォルダツリー(再投稿)の動作について匿名3242002-03-13(水) 09:03
     #326-0RE#324:エクスプローラ左窓の様なフォルダツリー(再投稿)の動作について高架の藤2002-03-13(水) 11:44
     #329-0RE#326:エクスプローラ左窓の様なフォルダツリー(再投稿)の動作について匿名3292002-03-13(水) 13:39
     #330-0RE#324:エクスプローラ左窓の様なフォルダツリー(再投稿)の動作についてK.J.K.2002-03-13(水) 13:57
     #331-0RE#329:エクスプローラ左窓の様なフォルダツリー(再投稿)の動作について高架の藤2002-03-13(水) 14:39
     #332-0RE#330:エクスプローラ左窓の様なフォルダツリー(再投稿)の動作についてゆう(U)2002-03-13(水) 14:52
     #333-0RE#331:サンプルコード#142の動作について匿名3332002-03-13(水) 14:55
     #334-0RE#332:エクスプローラ左窓の様なフォルダツリー(再投稿)の動作について匿名3342002-03-13(水) 14:57
     #336-0RE#329:エクスプローラ左窓の様なフォルダツリー(再投稿)の動作についてゆう(U)2002-03-13(水) 15:27
     #337-0RE#334:エクスプローラ左窓の様なフォルダツリー(再投稿)の動作についてゆう(U)2002-03-13(水) 15:37
     #340-0RE#333:サンプルコード#142の動作について高架の藤2002-03-13(水) 16:12
     #341-0RE#340:サンプルコード#142の動作について匿名3412002-03-13(水) 16:26
     #342-0RE#341:サンプルコード#142の動作について高架の藤2002-03-13(水) 17:25
     #348-0RE#342:サンプルコード#142の動作について匿名3482002-03-14(木) 08:22
     #350-0RE#348:サンプルコード#142の動作についてゆう(U)2002-03-14(木) 10:07
     #352-0RE#350:サンプルコード#142の動作について匿名3522002-03-14(木) 10:36
     #353-0RE#352:サンプルコード#142の動作について高架の藤2002-03-14(木) 12:52
     #356-0RE#353:サンプルコード#142の動作について匿名3562002-03-14(木) 14:24
     #357-0RE#356:サンプルコード#142の動作について高架の藤2002-03-14(木) 14:27
     #359-0RE#357:サンプルコード#142の動作について匿名3592002-03-14(木) 15:07
     #360-0RE#359:サンプルコード#142の動作について高架の藤2002-03-14(木) 17:00
     #362-0RE#360:サンプルコード#142の動作についてゆう(U)2002-03-15(金) 08:34
#324-0
エクスプローラ左窓の様なフォルダツリー(再投稿)の動作について
「こんな事できます!」から移動してまいりました。

どなたか#142 のサンプル「エクスプローラ左窓の様なフォルダツリー」を実行した方が
いらっしゃいましたら教えていただきたいことがございます。
 
    Win98,VB5.0(SP3),IE6.0という環境なのですが。。。
   実行してもTreeViewには「デスクトップアイコン」が表示されているだけで
   クリックしても何の変化がありません。

この現象を回避するにはどのような処理をしてあげればよいのでしょうか?。
#326-0
RE#324:エクスプローラ左窓の様なフォルダツリー(再投稿)の動作について
> 「こんな事できます!」から移動してまいりました。
#良かった。移動してくださったんですね。


> どなたか#142 のサンプル「エクスプローラ左窓の様なフォルダツリー」を実行した方が
> いらっしゃいましたら教えていただきたいことがございます。
>  
>     Win98,VB5.0(SP3),IE6.0という環境なのですが。。。
>    実行してもTreeViewには「デスクトップアイコン」が表示されているだけで
>    クリックしても何の変化がありません。
> 
> この現象を回避するにはどのような処理をしてあげればよいのでしょうか?。
とりあえず、デバッグしてみましたか?1行づつ実行して見ましたか?

後、ソースコード中に「On Error Resume Next」が何箇所かありますが、
これらを全部コメントにしてみてください。
どこかでエラーになりませんか?
#329-0
RE#326:エクスプローラ左窓の様なフォルダツリー(再投稿)の動作について
> > どなたか#142 のサンプル「エクスプローラ左窓の様なフォルダツリー」を実行した方が
> > いらっしゃいましたら教えていただきたいことがございます。
> >  
> >     Win98,VB5.0(SP3),IE6.0という環境なのですが。。。
> >    実行してもTreeViewには「デスクトップアイコン」が表示されているだけで
> >    クリックしても何の変化がありません。
> > 
> > この現象を回避するにはどのような処理をしてあげればよいのでしょうか?。
> とりあえず、デバッグしてみましたか?1行づつ実行して見ましたか?

ステップ実行中に発生したエラーです。

Public Sub Tvw_AddRootFolder(ByVal m_TreeView As TreeView, _
                             ByVal m_ImageList As ImageList, _
                             ByVal m_PictureBox As PictureBox, _
                             Optional ByVal varRootPath As Variant, _
                             Optional ByVal strInitPath As String)
の「Set objRootNode.Tag = objRootFolder.Items.Item」部分で、
「実行時エラー424:オブジェクトが必要です」と出ました。

#330-0
RE#324:エクスプローラ左窓の様なフォルダツリー(再投稿)の動作について
# 「引用」は「引用」です。>匿名318さん。
# 全文を引用する意味はない、ということです。

で、フォルダーツリーは説明が難しいので、サンプルを作りました。
http://www.koalanet.ne.jp/~akiya/vbtaste/vbp/FldrTr01.lzh
# タイプライブラリを同梱してますので、それを用いてください。
#331-0
RE#329:エクスプローラ左窓の様なフォルダツリー(再投稿)の動作について
> > とりあえず、デバッグしてみましたか?1行づつ実行して見ましたか?
> の「Set objRootNode.Tag = objRootFolder.Items.Item」部分で、
> 「実行時エラー424:オブジェクトが必要です」と出ました。
デバッグしてます?
このエラーはこの行のいずれかのオブジェクトが正しく設定されていないと言う事です。
どのオブジェクトが正しくないか確認しましたか?
確認したら、そのオブジェクトを生成している個所を確認してください。

#良く見れば、
#「エクスプローラ左窓の様なフォルダツリー(再投稿)の動作について」
#と
#「TreeViewのNodes.Addについて(「はじめたばかりの人専用」から移ってきました)」
#と言う似た内容のスレッドが走ってますね・・・紛らわしい・・・
#332-0
RE#330:エクスプローラ左窓の様なフォルダツリー(再投稿)の動作について
Visual Baisc magazine 2000年 6月号の
「こだわりコンポーネント工房」
でSHBrowseForFolderを使用してコントロールを
作成するという物がありました。
※フォルダ選択ダイアログのアノ部分を
 使わせてもらうって方法です

ネットワーク専用として作成されてますが
簡単に改造できるのでバックナンバーを
取得して見てはいかがでしょう。
#333-0
RE#331:サンプルコード#142の動作について
このサンプルコードの注意書きで以下の文章があったのですが、
今回の「実行時エラー424:オブジェクトが必要です」と何か関係があるのでしょうか?。

アーリーバインドでShellオブジェクトを利用しますのでIEのバージョン
により、事前に参照設定するDLLが異なります。下記を参考にして下さい。
動作環境 Windows 98 + IE4 の場合、SHDOCVW.DLLを参照設定。(動作確認)
     Windows 98 + IE5 の場合、SHDOC401.DLLを参照設定。(未確認)

> > > とりあえず、デバッグしてみましたか?1行づつ実行して見ましたか?
> > の「Set objRootNode.Tag = objRootFolder.Items.Item」部分で、
> > 「実行時エラー424:オブジェクトが必要です」と出ました。
> デバッグしてます?
> このエラーはこの行のいずれかのオブジェクトが正しく設定されていないと言う事です。
> どのオブジェクトが正しくないか確認しましたか?
 どのような確認をしたらよいのですか?。  
#334-0
RE#332:エクスプローラ左窓の様なフォルダツリー(再投稿)の動作について
> Visual Baisc magazine 2000年 6月号の
> 「こだわりコンポーネント工房」
> でSHBrowseForFolderを使用してコントロールを
> 作成するという物がありました。
> ※フォルダ選択ダイアログのアノ部分を
>  使わせてもらうって方法です
> 
> ネットワーク専用として作成されてますが
> 簡単に改造できるのでバックナンバーを
> 取得して見てはいかがでしょう。

これってエクスプローラの様にファイルの表示(ListView)とかできるのでしょうか?。

#336-0
RE#329:エクスプローラ左窓の様なフォルダツリー(再投稿)の動作について
> の「Set objRootNode.Tag = objRootFolder.Items.Item」部分で、
> 「実行時エラー424:オブジェクトが必要です」と出ました。
タブン「Folder オブジェクト」の問題でしょう。

参照設定で「Microsoft Scripting Runtime」をチェック
していませんか?

なら・・・
    Dim objRootFolder As Shell32.Folder   'ルートのFolderオブジェクト
の様に宣言するか、優先順位を変更しないと
期待しているFolder型ではないものを宣言している
ことになります。

ちなみに、私の環境でも「デスクトップ」だけしか
表示されません。
デスクトップだけで、その直下のNodeが作成されない
のが問題なのかと思います…詳しい解析はしてませんが。

Win2000(SP2)/VB6.0(SP5)/IE5.5
参照設定
「Microsoft Shell Controls And Automation」
SHELL32.DLL(5.0.3315.2902)

#337-0
RE#334:エクスプローラ左窓の様なフォルダツリー(再投稿)の動作について
> これってエクスプローラの様にファイルの表示(ListView)とかできるのでしょうか?。
ファイルの表示部分(右側のListView)は別ですが・・・


フォルダツリーにファイルも表示させる事は簡単に出来ます。

詳しくは「SHBrowseForFolder(API)関数」をMSDNで
読んでみて下さい・・・

BIF_BROWSEINCLUDEFILES = &H4000&
でフォルダ以外のファイルも表示されます。

Webで検索すると幾つも見つかるので動作を自分の目で
確かめてみてはいかがでしょう。
#340-0
RE#333:サンプルコード#142の動作について
> このサンプルコードの注意書きで以下の文章があったのですが、
> 今回の「実行時エラー424:オブジェクトが必要です」と何か関係があるのでしょうか?。

> >     Win98,VB5.0(SP3),IE6.0という環境なのですが。。。

と言う事でしたので、取り敢えず、VB6ではなく、VB5のTreeViewを使ってみました・・・
発生しますね、このエラー。
どうも、VB5版のツリービューではノードのTagプロパティにオブジェクトをセットできないようです。
#「VB5じゃ動かないと」言う結論になりそう・・・

しかし、VB5とVB6のTreeViewだと、ライブラリ名称が違うの(ComctrlLibとMSComctlLib)で、
そこを修正しないと、まったく動かないはずですね・・・
どのコンポーネントを使っています?
#341-0
RE#340:サンプルコード#142の動作について
> > このサンプルコードの注意書きで以下の文章があったのですが、
> > 今回の「実行時エラー424:オブジェクトが必要です」と何か関係があるのでしょうか?。
> 
> > >     Win98,VB5.0(SP3),IE6.0という環境なのですが。。。
> 
> と言う事でしたので、取り敢えず、VB6ではなく、VB5のTreeViewを使ってみました・・・
> 発生しますね、このエラー。
> どうも、VB5版のツリービューではノードのTagプロパティにオブジェクトをセットできないようです。
> #「VB5じゃ動かないと」言う結論になりそう・・・
> 
> しかし、VB5とVB6のTreeViewだと、ライブラリ名称が違うの(ComctrlLibとMSComctlLib)で、
> そこを修正しないと、まったく動かないはずですね・・・
> どのコンポーネントを使っています?
  ComctrlLibをつかっております。
#342-0
RE#341:サンプルコード#142の動作について
> > しかし、VB5とVB6のTreeViewだと、ライブラリ名称が違うの(ComctrlLibとMSComctlLib)で、
> > そこを修正しないと、まったく動かないはずですね・・・
> > どのコンポーネントを使っています?
>   ComctrlLibをつかっております。
なら、確定ですね。
「このサンプルはVB5では動きません」です。

VB5で動作させるなら、フォルダオブジェクトの管理をTagプロパティ以外で行うように作り直す必要が有りますね。
例えば、FullPathをキーにCollectionで管理するようにするとか・・・
実際の修正方法はご自分で考えて見てください。

#確か最初の投稿で「勉強のため」とおっしゃってましたよね。
#348-0
RE#342:サンプルコード#142の動作について
> 「このサンプルはVB5では動きません」です。
> 
> VB5で動作させるなら、フォルダオブジェクトの管理をTagプロパティ以外で行うように作り直す必要が有りますね。
> 例えば、FullPathをキーにCollectionで管理するようにするとか・・・
> 実際の修正方法はご自分で考えて見てください。
 
  昨日から思考錯誤してみたのですが、何からどのような手順で進めていったらよいのかがさっぱり
 見当もつきません。すみませんがご指導の程 よろしくお願いいたします。 
#350-0
RE#348:サンプルコード#142の動作について
>   昨日から思考錯誤してみたのですが、何からどのような手順で進めていったらよいのかがさっぱり
>  見当もつきません。すみませんがご指導の程 よろしくお願いいたします。 
まずはコントロールの基本的な使用方法を調べて、簡単な
ツリーを作成できるようにして下さい。

デスクトップ−マイコンピュータなどどの様に取得するか
調べてみて下さい。
※先のItems.Item部分で停止し中身を確認するとか

初期設定時間がかかる方法ですが、とりあえず全てのツリーを
完成させてみてください。

その後、初期設定時間を短縮する方法を考えてみてください。
※一般的なのは、子のNodeはダミーで作成しておき(+表示用)
 展開された時にその子のNodeを完成させるとか…


デスクトップやそのアイコンなど、難しそうな部分は
サンプルを参考にすると、基本的なコントロールの
使用方法がわかれば比較的簡単に実現できると思います。


サンプルのポップアップメニューの部分はとりあえず
後回しでツリーの完成後の課題にしてしまえば?
#352-0
RE#350:サンプルコード#142の動作について
サンプルコード#142に手を加えてファイラーを作成しようとしています。
私の環境はWindows98/VB5.0です。
しかし、このコードはVB5では動作しない(VB5版のツリービューではノードのTagプロパティに
オブジェクトをセットできない)ということがわかりました。
それで昨日、高架の藤さんからのアドバイスで「VB5で動作させるなら、フォルダオブジェクトの管理を
Tagプロパティ以外で行うように作り直す必要が有りますね。例えば、FullPathをキーにCollectionで
管理するようにするとか・・・」と言われました。

エラー発生箇所は「Set objRootNode.Tag = objRootFolder.Items.Item」でオブジェクトが必要です
(実行時エラー424)。

昨日から思考錯誤してみたのですが、さっぱり見当もつきません。
すみませんがご指導の程 よろしくお願いいたします。 
#353-0
RE#352:サンプルコード#142の動作について
> サンプルコード#142に手を加えてファイラーを作成しようとしています。

> 私の環境はWindows98/VB5.0です。
> それで昨日、高架の藤さんからのアドバイスで「VB5で動作させるなら、フォルダオブジェクトの管理を
> Tagプロパティ以外で行うように作り直す必要が有りますね。例えば、FullPathをキーにCollectionで
> 管理するようにするとか・・・」と言われました。
念のため・・・
「こうすれば直ぐ直ります」と言う意味じゃ無いですよ。
このサンプルは、VB5では動かないので、基本的に作り直す必要が有ります。
#全面改訂とは言いませんが。
その方法の1つとして、「Collectionを使うと言う選択も有る」と言うだけです。

#何が問題でどうすれば良いか理解できないなら、別のサンプルを捜した方が早いかも知れませんね。

取りあえず私がやってみたのは、
(1)Collection型変数を1つ用意する。
(2)(1)のコレクションにオブジェクトを設定/参照するサブルーチンを新規に作る。
(3)tagに設定、tagから参照している所を(2)のサブルーチンに置き換える。
と言う方法です。
#356-0
RE#353:サンプルコード#142の動作について
> このサンプルは、VB5では動かないので、基本的に作り直す必要が有ります。
> #全面改訂とは言いませんが。
> その方法の1つとして、「Collectionを使うと言う選択も有る」と言うだけです。

 ちょっと前のレスだとFullPathをキーに。。。とありましたが今回の方法にはFullPathキーが
 どのように絡んでくるのですか?。 
> 
> 取りあえず私がやってみたのは、
> (1)Collection型変数を1つ用意する。
> (2)(1)のコレクションにオブジェクトを設定/参照するサブルーチンを新規に作る。
> (3)tagに設定、tagから参照している所を(2)のサブルーチンに置き換える。
> と言う方法です。
#357-0
RE#356:サンプルコード#142の動作について
>  ちょっと前のレスだとFullPathをキーに。。。とありましたが今回の方法にはFullPathキーが
>  どのように絡んでくるのですか?。 

> > (2)(1)のコレクションにオブジェクトを設定/参照するサブルーチンを新規に作る。
ここで、コレクション管理用のキーにNodeオブジェクトのFullpathプロパティを使ってみました。
エクスプローラタイプのノード構成に限定するなら、Fullpathは各ノードで一意に決定されるはずですので。
#359-0
RE#357:サンプルコード#142の動作について
> > > (2)(1)のコレクションにオブジェクトを設定/参照するサブルーチンを新規に作る。
> ここで、コレクション管理用のキーにNodeオブジェクトのFullpathプロパティを使ってみました。
> エクスプローラタイプのノード構成に限定するなら、Fullpathは各ノードで一意に決定されるはずですので。
(1) Dim myCollection As Collection ですか??(Collection型変数を1つ用意する。)。
(2) Set myCollection = objRootNode.FullPath ですか??(オブジェクトを設定)。
    ???? (参照するサブルーチンを新規に作る。)
(3) ???? (tagに設定、tagから参照している所を(2)のサブルーチンに置き換える。)

????の部分が難しい。。。教えていただけないでしょうか??。
#360-0
RE#359:サンプルコード#142の動作について
> (1) Dim myCollection As Collection ですか??(Collection型変数を1つ用意する。)。
> (2) Set myCollection = objRootNode.FullPath ですか??(オブジェクトを設定)。
>     ???? (参照するサブルーチンを新規に作る。)
> (3) ???? (tagに設定、tagから参照している所を(2)のサブルーチンに置き換える。)

・・・要するに「コレクションが何だか分かって無い」と言う事でしょうか?
でしたら、このサンプルをいじる前に「コレクションの使い方」から勉強した方が良いと思います。

もしくはコレクションを使わない別の方法を「自分で」考えて見てください。
「コレクションを使う方法」はあくまで「私がやってみた方法」であり、唯一絶対の解じゃ有りません。
あなたが理解&使用できる機能を捜してみてください。

後、もう1回書いておきます。
「何が問題でどうすれば良いか理解できないなら、別のサンプルを捜した方が早いかも知れませんね。」

ちなみに(2)は間違っていますよ。
#362-0
RE#360:サンプルコード#142の動作について
私の環境で[デスクトップ]しか表示しない原因がわかりました、
「SHSimpleIDListFromPath」が機能してないのが原因でした。

  'パス名が特殊フォルダ表示名の場合
'  If (SHSimpleIDListFromPath(strPath) = 0) Then
    CSIDL = CSIDLFromDisplayName(strPath)  'CSIDL定数を取得
    If (CSIDL <> -1) Then
      Call SHGetSpecialFolderLocation(0, CSIDL, pidl)  'PIDLを取得
    Else  'CSIDL定数を取得できない場合はサブフォルダの列挙で調べる
      HasSubFolder_Attr = HasSubFolder_Enum(objFolderItem.GetFolder)
      Exit Function
    End If
'  End If

とする事でツリーが出来るようになりました。
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)