0

FileDialog OnTypeChange イベントで FileDialog の FileTypeIndex を取得する方法は?

function TFileDialogEvent.OnTypeChange(const pfd: IFileDialog):
  HResult; stdcall;
var
  iCaption: string;
  iFilename: PWideChar;
begin
  {Get the current filename}
  pfd.GetFileName(iFilename);
  {Get the classname of the dialog to set the caption}
    if FClassName = 'TIEWin7FileOpenDialog' then
      iCaption := 'Open- ' + iFilename
    else
      iCaption := 'Save As- ' + iFilename;
    pfd.SetTitle(PWideChar(iCaption));
    FileTypeIndex := pfd.GetFileTypeIndex(???);
end;
4

2 に答える 2

3

ドキュメントにIFileDialog::GetFileTypeIndex答えが含まれています。そのメソッドの C++ シグネチャは次のとおりです。

HRESULT GetFileTypeIndex(
  [out]  UINT *piFileType
);

Delphi に変換すると、次のようになります。

function GetFileTypeIndex(out FileType: UINT): HRESULT;

とはいえ、Delphi の翻訳ではShlObj、パラメータが which であると宣言されていますが、varこれは意味的に正しくありません。それが起こるので、それは本当に問題ではありません。

すべてをまとめると、コードは次のようになります。

OleCheck(pfd.GetFileTypeIndex(FileTypeIndex));

エラーチェックを追加したことに注意してください。あなたもすべき。質問のコードは 3 つの異なる COM メソッドを呼び出しており、いずれの場合もエラーのチェックに失敗しています。

于 2012-11-26T19:58:57.173 に答える
1

物件をご利用いただけFileTypeIndexます。

于 2012-11-26T21:05:00.983 に答える