Tiny Mouse's WorkshopソフトウェアライブラリTSearchFile & TSearchDir
ファイル&ディレクトリ検索コンポーネント TSearchFile & TSearchDir
●はじめに
 《TSearchFile》及び《TSearchDir》は、ファイルやディレクトリを検索する、
Delphi 用のコンポーネントです。
 Delphi で ファイルやフォルダを検索するには、FindFirst や FindNext を使っ
てコーディングしないといけませんが、このコンポーネントを使えば、フォームに
コンポーネントを貼り付け、イベントハンドラを使って簡単にコーディングできま
す。

 《TSearchFile》及び《TSearchDir》には、次の特徴があります。

・指定したディレクトリ内の、指定した名前に一致するファイルやディレクトリを
 検索できます
・指定したディレクトリ内の、全てのサブディレクトリを検索できます。
・「ファイルやフォルダがみつかった」ことをイベントとして扱えます
・イベントハンドラ内で、みつかったファイルやフォルダのフルパス、8.3 形式の
 名前、時刻、属性を取得できます
・イベントハンドラ内で、検索を中断する等できます。
・基本的に 江川伸和 さんの TSeachFile & TSearchDir コンポーネントと互換
●確認済の動作環境
 Windowx XP Home + Delphi 6 Personal
 Windows XP Home + Delphi 7 Professional
●インストール方法

 Delphi の「既存パッケージへのコンポーネントのインストール」の手順に従っ
て、SelectFolder.pas をインストールして下さい。インストールされると、コン
ポーネントパレットの「UserCtrls」タブに登録されます。

●《TSearchFile》の使用方法

 1)フォームにコンポーネントを追加します。

 2)Directory プロパティを指定します。
  必要なら SearchName プロパティを指定します。
  サブディレクトリを検索する場合は、Recursive プロパティに True を指定し
  ます。

 3)OnFind や OnFindDir のイベントハンドラを記述します。

 4)Search メソッドで検索を実行します。

●《TSearchFile》のプロパティ、メソッド、イベント

◎Directory: String

 ここで指定したディレクトリ内のファイルやディレクトリを検索します。

◎Recursive: Boolean

 指定したディレクトリ内のサブディレクトリに対して検索をするか指定します。
デフォルトは False です。

◎SearchName: String

 検索するファイルやディレクトリの名前を指定します。「*」や「?」のワイルド
カードを使用できます。デフォルトは「*.*」です。

◎Busy: Boolean

 検索中か否かを表します。

◎Search: Boolean

 検索を開始します。ファイルやディレクトリがみつかる度に OnFind メソッドが
発生します。
 Recursive プロパティが True なら、Direcotry プロパティで指定したディレク
トリ内のサブディレクトリに対して検索をします。
 OnFind のイベントハンドラ内で検索を中断した場合、返値は False になります。
それ以外は True を返します。

◎OnFind(Sender: TObject; Name: String;
  Data: TSearchFileData; var Continue: Boolean)

 Search メソッドにより検索が開始され、ファイルやディレクトリがみつかる度に
発生します。
 Name には、みつかったファイルやディレクトリの名前が代入されています。
 Data には、みつかったファイルやディレクトリに関する情報が収められています。
詳細については TSearchFileData に関する説明を参照のこと。
 Continue に False を代入すると、検索を中断できます。この場合、Search メソ
ッドは False を返して終了します。

◎OnFindDir(Sendear: TObject; Name: String;
  Data: TSearchFileData; var Skip, IngnoreSubdir: Boolean)

 Search メソッドにより検索が開始され、ディレクトリがみつかる度に発生します。
 Name には、みつかったディレクトリの名前が代入されています。
 Data には、みつかったディレクトリに関する情報が収められています。詳細につ
いては TSearchFileData に関する説明を参照のこと。
 Skip に True を代入すると、そのフォルダ内のファイルとディレクトリを検索対
象から外します。IgnoreSubdir に True を代入すると、そのフォルダのサブディレ
クトリを検索対象から外します。

●《TSearchDir》のプロパティ、メソッド、イベント

◎BaseDir: String

 ここで指定したディレクトリ内のディレクトリを検索します。

◎Busy: Boolean

 検索中か否かを表します。

◎Search: Boolean

 検索を開始します。ディレクトリがみつかる度に OnFind メソッドが発生します。
 OnFind のイベントハンドラ内で検索を中断した場合、返値は False になります。
それ以外は True を返します。

◎OnFind(Sender: TObject; Name: String;
  Data: TSearchFileData; var IgnoreSubdir, Continue: Boolean)

 Search メソッドにより検索が開始され、ディレクトリがみつかる度に発生します。
 Name には、みつかったディレクトリの名前が代入されています。
 Data には、みつかったディレクトリに関する情報が収められています。詳細につ
いては TSearchFileData に関する説明を参照のこと。
 IgnoreSubdir に True を代入すると、そのフォルダのサブディレクトリを検索対
象から外します。
 Continue に False を代入すると、検索を中断できます。この場合、Search メソ
ッドは False を返して終了します。

◎OnFindDir(Sendear: TObject; Name: String;
  Data: TSearchFileData; var Skip, IngnoreSubdir: Boolean)

 Search メソッドにより検索が開始され、ディレクトリがみつかる度に発生します。
 Name には、みつかったディレクトリの名前が代入されています。
 Skip に True を代入すると、そのフォルダ内のファイルとディレクトリを検索対
象から外します。IgnoreSubdir に True を代入すると、そのフォルダのサブディレ
クトリを検索対象から外します。

●《TSearchFileData》のメンバ

 《TsearchFile》や《TSearchDir》の OnFind や OnFindDir イベントの Data 引
数は、《TSearchFileData》型です。次のメンバを持っています。

 Name: String … ファイル名 (フルパスではない)
 ShortName:String … 8.3 形式のファイル名
 Size: Int64 … サイズ。フォルダの場合は 0
 ValidCreationTime: Boolean … CreationTime の値が有効か
 CreationTime: TDateTime … 作成時刻
 ValidLasWriteTime: Boolena … LastWriteTime の値が有効か
 LastWriteTime: TDateTime … 最終更新時刻
 ValidLastAccessTime: Boolean … LastAccessTime の値が有効か
 LastAccessTime: TDateTime … 最終アクセス時刻
 IsDirectory: Boolean … ディレクトリか否か
 IsReadOnly: Boolena … 読込専用属性を持っているか
 IsHidden: Boolen … 隠し属性を持っているか
 IsSysFile: Boolen … システム属性を持っているか
 IsVolumeID: Boolean … ボリュームラベルであるか
 IsArchive: Boolean … アーカイブ属性を持っているか

●入手先

 《TSelectFolderDialog》は、以下のウェブサイトからダウンロードできます。

 ・Delphian World (http://www.delphianworld.com/)

●連絡先

 不都合などあれば、以下のウェブサイトに掲示板を設置してありますので、そこ
へ発言して下さい。

 ・Tiny Mouse's Workshop (http://hp.vector.co.jp/authors/VA029585/)

●著作権、免責について

 《TSearchFile》及び《TSearchDir》は、《フリーソフトウェア》です。使用、配
布に関して、特に制限はありません。著作権は、Tiny Mouse が保有します。
 《TSearchFile》及び《TSearchDir》の使用によって生じた損害について、Tiny
Mouse は補償の義務を負わないこととします。
 また、要望はできる限り応えるつもりですが、必ずしも対応するとは限りません。

●転載について

 《TSearchFile》及び《TSearchDir》の転載に関して、特に制限はありません。た
だし、配布ファイル及び格納ファイルを改変することは禁止します。また、転載の
際は、その旨を Tiny Mouse (KHC04052@nifty.ne.jp) まで連絡下さい。

●開発環境について

 《TSearchFile》及び《TSearchDir》は、以下の環境で開発しました。

 ・Borland Delphi 7.0 Professional
  Borland (http://www.borland.co.jp/)

 《TSearchFile》及び《TSearchDir》は、以下のソフトをベースにしています。

 ・TSearchFile & TSearchDir コンポーネント
  江川伸和 さん

 配布ファイルを作成するために、以下のツールを利用しました。

 ・LHAユーティリティ32
  大竹和則 さん (http://www.kazusoft.net/)

 ・UNLHA32.DLL
  Micco さん (http://www2.nsknet.or.jp/~micco/micindex.html)

●《TSearchFile》及び《TSearchDir》についての雑感

 Delphi で作ったソフトで、ファイルやディレクトリを検索するために、江川伸和
さんの TSearchFile と TSearchDir という VCL を使ってきた。
 自分としては全く問題なく使ってきたが、《EzExpEx》で使っていて、ある要望を
ユーザから受け、それに応えるために、TSearchFile を改造しないといけないと思
った。
 こうして、Tiny Mouse 版 TSearchFile を作りました。

●《Delphi》についての雑感

 2000 年夏、Tiny Mouse も《Delphi》を使い始めました。なんて面白いツールな
んだろう、と感動しました。Delphi は 1.0 の頃から、その名前は知っていたけれ
ど、こんなことなら、その頃から使っているんだったなあ……。
 Visual Basic 並の簡単さで、Visual C++ 並の開発力――というのは、嘘ではあ
りませんね。
 何より魅力的なのは、優秀なパーツ (コンポーネントという) が、フリーで多数、
公開されていることですね。
 サンデープログラマの皆さん、ぜひ《Delphi》を使いましょう。