Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2002年01月14日] [更新 2010年10月23日] ファイル関連ダイアログコンポーネント類
ファイル選択・保存ダイアログコンポーネント
イベント
動作確認等 -







ダイアログ表示時のイベント


OnShow(Sender)

ダイアログを表示した時に発生します.このイベント発生時点でファイルリストは作成されています.

引数 説明
Sender TObject コンポーネント自身




ダイアログを閉じる時のイベント


OnBeforeClose(Sender, FilePath, Action)

ダイアログを閉じる直前に発生します.

引数 説明
Sender TObject コンポーネント自身
FilePath String 選択中のファイルのフルパス名
var Action Boolean この値を False にするとフォームを閉じない
デフォルトは True




[ ファイル名変更 ] ボタンクリック時のイベント


OnBeforeReName(Sender, FilePath, Action )

ポップアップメニューの [ファイル名変更] を選択した時に発生します.
OnBeforeName イベントとは違い名前変更の動作には入っていません.独自のファイル名変更ルーチンを使用するのに利用できます.

引数 説明
Sender TObject コンポーネント自身
FilePath String 選択中のファイルのフルパス名
var Action Boolean この値を False にすると名前変更動作に入らない
デフォルトは True




ファイル名変更前のイベント


OnBeforeReName(Sender, OldFilePath, NewFilePath, Action)

ファイル名の編集作業が終了直前に発生します.

引数 説明
Sender TObject コンポーネント自身
OldFilePath String 選択中のファイルで,これから変更しようとするファイルのフルパス名
NewFilePath String 変更後のフルパス名
var Action Boolean この値を False にすると変更しない
また OnAfterReName イベントも発生しない
デフォルトは True




ファイル名変更後のイベント


OnAfterReName(Sender, OldFilePath, NewFilePath, Flag)

ファイル名の変更動作の後に発生します.このイベントを記述するとファイル名の変更が失敗した時のダイアログを表示しません.

引数 説明
Sender TObject コンポーネント自身
OldFilePath String 変更前のフルパス名
NewFilePath String 変更後のフルパス名
Flag Boolean この値が True なら変更は成功
False なら失敗してファイル名は変更されない




ファイル削除前のイベント


OnBeforeDelete(Sender, FilePath, Action)

ファイルを削除する前に発生します.必要ならばこのイベント内で処理して下さい.

引数 説明
Sender TObject コンポーネント自身
FilePath String 削除の対象となるファイルのフルパス名
var Action Boolean この値を False にすると削除しない
OnAfterDelete イベントも発性しない
デフォルトは True


リスト1
削除実行前に確認のダイアログを表示
//=============================================================================
//  削除の確認ダイアログ表示
//=============================================================================
procedure TForm1.plOpenDialog1BeforeDelete(Sender: TObject; FilePath: string;
  var Action: Boolean);
var
  Ret : Integer;
begin
  Ret := MessageDlgPos('本当に削除してもよろしいですか.',
                       mtConfirmation, [mbOK, mbCancel], 0, Left, Top);
  Action := Ret = mrOk;
end;




ファイル削除後のイベント


OnAfterDelete(Sender, FilePath, Flag)

ファイル削除動作の後に発生します.このイベントを記述すると,ファイル削除に失敗した時のダイアログを表示しません.

引数 説明
Sender TObject コンポーネント自身
FilePath String 削除の対象となったファイルのフルパス名
Flag Boolean この値が True なら削除は成功
False なら削除に失敗して削除されていない




[ 絞込み検索 ] ボタンクリック時のイベント


OnFindBtnClick(Sender, Directory, DefautEvent, AndFindText)

絞込み検索表示用に用意したボタンをクリックすると発生します.

引数 説明
Sender TObject コンポーネント自身
Directory String 現在のディレクトリ
var DefautEvent Boolean True の時はファイル名検索用のダイアログを表示
デフォルトは True
var AndFindText String FindText プロパティで表示したファイルに対して,更にこの文字列を含むファイルのみを表示する絞り込み検索ができる


リスト2
デフォルトの動作を禁止し,文字列 '12' で絞り込み (部分一致) 検索してファイル一覧を更新
フォルダの参照ダイアログを表示すると元に戻る
procedure TForm1.plOpenDialog1FindBtnClick(Sender: TObject; Directory: string;
  var DefautEvent: Boolean; var AndFindText: string);
begin
  DefautEvent := False;
  AndFindText := '12';
  plOpenDialog1.GetFilesList;
end;




[ フォルダ参照 ] ボタンクリック時のイベント


OnFolderBtnClick(Sender, Directory, DefautEvent)

フォルダの参照ダイアログ表示用に用意したボタンをクリックすると発生します.
ここで表示されたフォルダの参照ダイアログで,フォルダを選択して [OK] でダイアログを閉じると,そのディレクトリ名が Directory プロパティに返されます.

引数 説明
Sender TObject コンポーネント自身
Directory String 現在のディレクトリ
var DefaultEvent Boolean False にするとフォルダ参照ダイアログを表示しない
独自のメニューなどを使用する場合に利用可能
デフォルトは True




表示フォルダが更新された時のイベント


OnFileListed(Sender, Directory, Count, ItemList,Text)

表示フォルダが変更になった時に発生します.
フォルダの参照ダイアログを表示している時に選択フォルダを変更した場合にも発生します.

引数 説明
Sender TObject コンポーネント自身
Directory String 現在のフォルダ
Count Integer ファイル数
ItemList TplFileDialogDataList 現在のフォルダのファイルリスト情報
var Text String この値を設定すると,ディレクトリ名の代わりにこの文字列を表示する


リスト3
//=============================================================================
//  ダイアログ上部にファイル数を表示
//  DisplayDirectoryをTrueにしておく必要あり
//=============================================================================
procedure TForm1.plOpenDialog1FileListed(Sender: TObject; Directory: string;
  Count: Integer; ItemList: TplFileDialogDataList; var Text: string);
begin
  Text := 'ファイル数 : ' + IntToStr(Count);
end;


リスト4
拡張子が .doc と docx のファイルをリスト
//=============================================================================
//  ファイルリストを取得したら拡張子が.docと.docxだけをリストする
//=============================================================================
procedure TForm1.plSaveDialog1FileListed(Sender: TObject; Directory: string;
  Count: Integer; ItemList: TplFileDialogDataList; var Text: string);
var
  i    : Integer;
  AExt : String;
begin
  for i := ItemList.Count - 1 downto 0 do begin
    AExt := ExtractFileExt(ItemList[i].FileFullPath);
    if (UpperCase(AExt) <> '.DOC') and (UpperCase(AExt) <> '.DOCX') then begin
      ItemList.Delete(i);
    end;
  end;
  //protected部のListViewのItems数をセット
  //仮想リストビューなのでこれで再描画が実行される
  TplDialog(plSaveDialog1).ListView.Items.Count := ItemList.Count;
end;




ファイルリスト描画時のイベント


OnAdvancedCustomDrawItem(Sender,
                         Item,State,
                         Stage,
                         DefaultDraw,
                         ImgListHandle,
                         ItemList)

ファイルリストを描画する際に発生するイベントです.カスタム描画用に用意しました.使用例がテストプログラムにあります.

引数 説明
Sender TObject コンポーネント自身
Item TListItem TListView のヘルプ参照
State TCustomDrawState TListView のヘルプ参照
Stage CustomDrawStage TListView のヘルプ参照
var DefaultDraw Boolean TListView のヘルプ参照
ImgListHandle Cardinal システムイメージリストのハンドル
ItemList TplFileDialogDataList 現在のフォルダのファイルリスト情報