ListView コントロール

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
M.S.
記事: 212
登録日時: 2005年6月01日(水) 21:51
お住まい: 奈良県北西部

ListView コントロール

#1 投稿記事 by M.S. »

ListView に Favorite (お気に入り) のフォルダの中にある、
インターネット ショートカットと、フォルダを表示させようとしたのですが、
過去ログを見てもうまくできないので、質問させていただきます。
僕の技量ではこれが限界です・・・。

これをどうすればちゃんとなるのか、教えて下さい。
hira
記事: 203
登録日時: 2005年5月31日(火) 20:14
お住まい: 兵庫県
連絡する:

Re: ListView コントロール

#2 投稿記事 by hira »

FindFirstFileは1回だけ呼び出し(→doより前)、ループ内ではFindNextFileを呼び出すようにしてはいかがでしょう?
※実験してませんが(^^;
ノッチ
記事: 82
登録日時: 2005年6月01日(水) 23:27
お住まい: 北海道札幌市

Re: ListView コントロール

#3 投稿記事 by ノッチ »

いくつか修正して動作するようになりました。

1) doの位置をhFind=FindFirstFile(buffer,Find)の後にする
2) buffer+"\*." が正しく結合されないのでlstrcat(buffer,"\*.")に変更
(ABは久しくさわってないので文字列の結合方法がわかりません)
3) アイテム追加のLVM_SETITEMをLVM_INSERTITEMに変更

FindFirstFileのbufferが"c:\~~~~\Favorites\*"だとフォルダも追加されます。
サブフォルダ以下はそのフォルダから個別に検索して下さい。
M.S.
記事: 212
登録日時: 2005年6月01日(水) 21:51
お住まい: 奈良県北西部

Re: ListView コントロール

#4 投稿記事 by M.S. »

> 1) doの位置をhFind=FindFirstFile(buffer,Find)の後にする
> 2) buffer+"\*." が正しく結合されないのでlstrcat(buffer,"\*.")に変更
> (ABは久しくさわってないので文字列の結合方法がわかりません)
> 3) アイテム追加のLVM_SETITEMをLVM_INSERTITEMに変更

こういうことでしょうか?
上のようにへんこうしましたが、表示されませんでした。

間違っている点がありましたら、ご指摘ください。
ノッチ
記事: 82
登録日時: 2005年6月01日(水) 23:27
お住まい: 北海道札幌市

Re: ListView コントロール

#5 投稿記事 by ノッチ »

コード: 全て選択

>     'ParamNumを元に、先頭からのインデックス番号を取得
>     lvFind.flags=LVFI_PARAM
>     lvFind.lParam=ParamNum
>     Find.cFileName=SendDlgItemMessage(hMainWnd,ListView1,LVM_FINDITEM,-1,VarPtr(lvFind))
上記の部分でLVIF_PARAMがLVFI_PARAMになってるのはただの打ち間違いだと思いますが、

コード: 全て選択

Find.cFileName=SendDlgItemMessage(hMainWnd,ListView1,LVM_FINDITEM,-1,VarPtr(lvFind))
の部分がよくわからないので、これをコメントアウトすればとりあえずは
動作するようになるはずです。
ノッチ
記事: 82
登録日時: 2005年6月01日(水) 23:27
お住まい: 北海道札幌市

Re: ListView コントロール

#6 投稿記事 by ノッチ »

ところでListViewじゃなくてTreeViewだった、ってオチはないですか?
エクスプローラーのフォルダ表示で左側に表示されるのがTreeViewです。
反対に、右側に表示されるのがListViewです。
どういった用途で使用するのかわかりませんが、フォルダとファイルのような
階層状態を表現するのはTreeViewの方がわかりやすいと思います。
M.S.
記事: 212
登録日時: 2005年6月01日(水) 21:51
お住まい: 奈良県北西部

Re: ListView コントロール

#7 投稿記事 by M.S. »

> ところでListViewじゃなくてTreeViewだった、ってオチはないですか?
> エクスプローラーのフォルダ表示で左側に表示されるのがTreeViewです。
> 反対に、右側に表示されるのがListViewです。

いえ、それはありません。
コントロール ID は、配置したときのままなので・・・。


> どういった用途で使用するのかわかりませんが、フォルダとファイルのような
> 階層状態を表現するのはTreeViewの方がわかりやすいと思います。

そうですか、TreeView でやろうと思ったのですが、
なんか難しそうだし過去のサンプル的なものがなかったので、
ListView でやっています。

TreeView のサンプル コードみたいなものを検索してみます。
M.S.
記事: 212
登録日時: 2005年6月01日(水) 21:51
お住まい: 奈良県北西部

#8 投稿記事 by M.S. »

かなり古いトピックですが…。

今日 ListBox でやってみたら出来たのですが、
ファイル名を表示させることについてと、
Win XP での動作について聞きたいことがあります。
上のコードで ListBox1 にセットすることに成功したのですが、
Win 95 では正常に動作したのに、Win XP では正常に動作しません。
これは、何故おこるのでしょうか?

それから、「do ~ loop while …」内にある、
「wsprintf(buf,"Internet Shortcut")」の「"Internet Shortcut"」を、
検索したファイル名にしたいのですが、どうすればいいのですか?

よろしくお願いします。


P.S.
関係ないですが、
Win 95 の "C:\WINDOWS\System\options\CABS"
の中を見ていたら、IE4 のインストーラがあったので、
IE4 をインストールして AB プログラミングができるようになりました。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

#9 投稿記事 by 7 »

> かなり古いトピックですが…。
そうですね...。

> 上のコードで ListBox1 にセットすることに成功したのですが、
> Win 95 では正常に動作したのに、Win XP では正常に動作しません。
> これは、何故おこるのでしょうか?
Win XP しか持ってないので検証できないのですけど、たぶんDeclareが問題になってるんじゃないでしょうか。String型ではなくBytePtr型にするべきです。 > それから、「do ~ loop while …」内にある、
> 「wsprintf(buf,"Internet Shortcut")」の「"Internet Shortcut"」を、
> 検索したファイル名にしたいのですが、どうすればいいのですか?
検索したファイルの情報はWIN32_FIND_DATA構造体に格納されます。ファイル名は cFileName メンバです。

ActiveBasic Ver 4.24.00
Windows XP Home SP2で動きました。
M.S.
記事: 212
登録日時: 2005年6月01日(水) 21:51
お住まい: 奈良県北西部

#10 投稿記事 by M.S. »

返信遅れてしまってすいません。


7 さんのコードで Win95 でも動作できました。
ありがとうございました。


そしてみなさん、ありがとうございました。
C1000
記事: 185
登録日時: 2006年5月07日(日) 17:16
お住まい: 宮城県
連絡する:

#11 投稿記事 by C1000 »

> そうですか、TreeView でやろうと思ったのですが、
> なんか難しそうだし過去のサンプル的なものがなかったので、
> ListView でやっています。
>
> TreeView のサンプル コードみたいなものを検索してみます。
今自分はTreeViewで同じことをやっています。
返信する