2012-11-26 1 views
0

FileDialog OnTypeChange 이벤트에서 FileDialog의 FileTypeIndex를 얻는 방법은 무엇입니까?TFileDialog.OnTypeChange 이벤트에서 piFileType을 얻는 방법

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; 
+1

'var FileTypeIndex : UINT; 성공하면 시작 (pfd.GetFileTypeIndex (FileTypeIndex)), 끝내면 끝납니다. '. – TLama

+0

이것은 MSDN 문서에서 분명해야합니다. –

+0

두 번째 질문에 대한 답이 여전히 필요합니다 ... 이에 대한 새로운 질문이 생겼습니다. – Bill

답변

3

설명서에는 IFileDialog::GetFileTypeIndex에 대한 대답이 들어 있습니다. 그 방법의 C++ 서명은 다음과 같이 델파이로 변환

HRESULT GetFileTypeIndex(
    [out] UINT *piFileType 
); 

가 :

말했다
function GetFileTypeIndex(out FileType: UINT): HRESULT; 

, ShlObj에서 델파이 번역은 의미 잘못 var로 매개 변수를 선언합니다. 그것이 일어날 때 그것은 정말로 중요하지 않습니다.

는 모두 함께 넣고 당신은 코드를 다음과 같이 읽어야 : 나는 일부 오류 검사를 추가 한

OleCheck(pfd.GetFileTypeIndex(FileTypeIndex)); 

참고. 너도 그래야 해. 질문에있는 코드는 세 가지 다른 COM 메서드를 호출하며 각 경우에 오류를 확인하지 못합니다.

+1

Ok Thanks ... Upvoted와 모든 내 pfd 호출에 OleCheck를 추가했습니다. – Bill