맨날 TOpenDialog로 코딩할때 이런식으로 했었다.
혹시나 사용자가 이름을 막 넣을 수도 있기 때문에 파일이 있는지 꼭 확인하곤 했었다.


if OpenDialog1.Execute then
begin
  if FileExists(OpenDialog1.FileName) then
  begin
    // Todo...
  end;
end;

사람이 머리가 나쁘면 손발이 고생이고
프로그래머가 머리가 나쁘면 코딩량이 늘어난다. ㅠ.ㅜ

TOpenDialog의 Property를 보면 Options라는 집합 프로퍼티가 보인다.

 ofReadOnly
 Causes the Read Only check box to be selected initially when the dialog box is created. This flag indicates the state of the Read Only check box when the dialog box is closed.
 ofOverwritePrompt  덮어쓰기 할것인지 확인한다.
 Save as 다이얼로그에서 이용한다.
 ofHideReadOnly  읽기 전용 체크박스를 숨긴다.
 
 동작 확인 불가
 ofNoChangeDir  사용자가 다를 폴더를 탐색하더라도 current directory가 변경되지 않도록 원래의 값으로 복원한다.
 ofShowHelp  도움말 버튼이 보이도록 한다.
 ofNoValidate  파일명이 시스템에 유효한 파일명인지 검사하지 않는다.
 ofAllowMultiSelect  여러개의 파일을 선택할수 있도록 한다.
 Files 프로퍼티에 선택한 파일명이 넘어온다.
 ofExtensionDifferent Specifies that the user typed a file name extension that differs from the extension specified by lpstrDefExt. The function does not use this flag if lpstrDefExt is NULL.

무슨 말인지 모르겠다 -_-;
 ofPathMustExist  폴더가 반드시 존재해야 한다.
 ofFileMustExist  파일이 반드시 존재해야 한다.
 파일이 없는 경우는 경고 메시지가 출력된다.
 이 플래그가 활성화되면 ofPathMustExist도 활성화된다.
 ofCreatePrompt  사용자가 입력한 파일명이 존재하지 않는 경우 생성할 것인지 물어보는 다이얼로그를 띄운다.
 ofShareAware Specifies that if a call to the OpenFile function fails because of a network sharing violation, the error is ignored and the dialog box returns the selected file name. If this flag is not set, the dialog box notifies your hook procedure when a network sharing violation occurs for the file name specified by the user. If you set the OFN_EXPLORER flag, the dialog box sends the CDN_SHAREVIOLATION message to the hook procedure. If you do not set OFN_EXPLORER, the dialog box sends the SHAREVISTRING registered message to the hook procedure.
 ofNoReadOnlyReturn  파일을 포함하고 있는 폴더가 읽기전용이거나 읽기 전용 파일을 반환하지 않도록 한다.
 ofNoTestFileCreate  다이얼로그가 닫히기 전에 파일이 생성되지 않도록 한다.
 ofNoNetworkButton  Network 버튼을 숨긴다.
 ofNoLongNames  8.3의 옛날 스타일로 보이게 한다.
 ofOldStyleDialog가 설정되어 있어야 한다.
 ofOldStyleDialog  다이얼로그가 고전 스타일로 보이도록 한다.
 ofNoDereferenceLinks  바로가기 파일(.LNK)의 원래 경로를 받을 수 있도록 한다.
 ofEnableIncludeNotify  폴더를 열었을때 CDN_INCLUDEITEM을 보낼것인지 설정한다.
 (델파이에는 OFN_ENABLEHOOK을 설정하는 옵션이 없는데 어떻게 사용할수 있는지는 모르겠음.)
 ofEnableSizing  다이얼로그 사이즈 변경 가능하도록 한다.
 ofDontAddToRecent  선택한 파일이 CSIDL_RECENT 즉 최근 폴더에 추가되지 않도록 한다.
 ofForceShowHidden
 hidden, system 파일을 보여준다.
 주의 : 파일이 hidden과 system 속성을 모두 가지고 있다면 보이지 않는다.

주황색 부분은 무슨 내용인지 확인 불가.
뭐 크게 필요하지는 않은 옵션같다.
TOpenDialog는 기본으로 ofHideReadOnly, ofEnableIncludeNotify 옵션이 켜져있다.


MSDN에 관련 내용이 더 있으니 확인하면 된다.
http://msdn.microsoft.com/en-us/library/ms646839%28VS.85%29.aspx

CFileDialog 도움말
http://msdn.microsoft.com/en-us/library/43xtah3y.aspx

+ Recent posts