掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
仮想リストビューの使い方 (ID:25784)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
調べて実際に動くところまでいったのですね。お疲れ様でした。 質問の内容についてですが,たぶんファイル検索の再帰処理(サブフォルダ の中まで次々と検索を行っていくルーチン)の部分がよくわからないポイン トであるように思いました。 とりあえず,参考になるかと思いますので,以前タブブラウザを作成した ときに書いた,お気に入りメニューバー作成のコードを掲載しておきます。 新規作成フォーム上にMainMenu1をおき,N1という名前のメニューを作って ください。また,Button1もおいてください。後は以下のコードを入力するだ けです。 private procedure EnumFiles(DirectoryName: string; BaseMenuItem: TMenuItem); procedure TForm1.EnumFiles(DirectoryName: string; BaseMenuItem: TMenuItem); var SearchRec: TSearchRec; MenuItem{, SubMenuItem}: TMenuItem; SL1, SL2: TStringList; i: Integer; begin if Copy(DirectoryName,Length(DirectoryName),1)<>'\' then DirectoryName:=DirectoryName+'\'; //ファイルとフォルダでは,作成するメニューのタイプが違うので,別々に管理する。 SL1 := TStringList.Create; SL2 := TStringList.Create; if FindFirst(DirectoryName+'*.*', faAnyFile-faHidden, SearchRec) = 0 then try repeat if SearchRec.Attr and faDirectory <> 0 then begin if not ((SearchRec.Name = '.') or (SearchRec.Name = '..')) then begin //フォルダはSL1へ。 SL1.Add(SearchRec.Name); end; end else begin //ファイルはSL2へ。 SL2.Add(SearchRec.Name); end; until FindNext(SearchRec) <> 0; SL1.Sort; SL2.Sort; for i := 0 to SL1.Count - 1 do begin MenuItem := TMenuItem.Create(Self); MenuItem.Caption := SL1.Strings[i]; BaseMenuItem.Add(MenuItem); //フォルダなら再度メニュー作成処理へ。 EnumFiles(DirectoryName + SL1.Strings[i] +'\', MenuItem); end; for i := 0 to SL2.Count - 1 do begin MenuItem:=TMenuItem.Create(Self); MenuItem.Caption := SL2.Strings[i]; //ファイルなら単純にメニューを作って終了。 BaseMenuItem.Add(MenuItem); end; finally FindClose(SearchRec); end; SL1.Free; SL2.Free; end; procedure TForm1.Button1Click(Sender: TObject); begin //↓IEの「お気に入り(&A)」に相当するメニュー。メニューアイテムなら何でもよいです。 N1.Clear; //↓フォルダパスは適当に書き換えてください。 EnumFiles('C:\Documents and Settings\Owner\Favorites', N1); end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.