24

Delphi を使用しています。openpicturedialog を実行するときに、ディレクトリのすべてのファイルのリストが必要です。

つまり、開くダイアログが実行され、そこから1つのファイルを選択すると、選択したファイルのディレクトリからすべてのファイルのリストが必要になります。

Thank YouFileNameのプロパティからディレクトリ名を取得するよう提案することもできます。TOpenDialog

4

6 に答える 6

53

Delphi 2010 を使用している場合は、tdirectory.getfiles を使用できます。最初に ioutils.pas を uses 句に追加してから、イベント ハンドラに次のコード行を記述します (そのイベント ハンドラに既にあるコードに加えて)。

uses IOUtils;

 var
    path : string;
begin
    for Path in TDirectory.GetFiles(OpenPictureDialog1.filename)  do
        Listbox1.Items.Add(Path);{assuming OpenPictureDialog1 is the name you gave to your OpenPictureDialog control}
end;
于 2010-06-12T06:41:55.660 に答える
31

@Himadri、OpenPictureDialog の主な目的はディレクトリを選択することではありません。とにかく、このダイアログを別の目的で使用している場合は、このコードを試すことができます。

Var
  Path    : String;
  SR      : TSearchRec;
  DirList : TStrings;
begin
  if OpenPictureDialog1.Execute then
  begin
    Path:=ExtractFileDir(OpenPictureDialog1.FileName); //Get the path of the selected file
    DirList:=TStringList.Create;
    try
          if FindFirst(Path + '*.*', faArchive, SR) = 0 then
          begin
            repeat
                DirList.Add(SR.Name); //Fill the list
            until FindNext(SR) <> 0;
            FindClose(SR);
          end;

     //do your stuff

    finally
     DirList.Free;
    end;
  end;

end;
于 2010-06-12T05:47:24.350 に答える
3

OpenPictureDialogのフィルタープロパティを変更して、すべてのファイルを含めます。

All (*.*)

編集: Open(Picture)Dialog でディレクトリを選択できるとは思いません。とにかく OpenPictureDialog の目的ではありません。

次に、FindFirstFindNextを使用して、このディレクトリ内のファイルを取得します。

于 2010-06-12T05:21:17.157 に答える
2

extractFilePath 関数を使用して、ディレクトリ名を取得できます。

myPath := extractFilePath(FileName);

ここで、FileName は OpenDialog で選択したファイルの名前です。

于 2010-06-12T05:44:36.943 に答える