Показать сообщение отдельно
  #2  
Старый 01.04.2013, 02:36
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Лень разбираться
Код:
type
  TFileName	= type String;
  TOpenDialog	= Object
    Parent       : HWND;
    FileName	 : TFileName;
    Filter            : String;
    DefaultExt         : String;
    Title                 : String;
    InitialDir            : String;
    function Execute : Boolean;
  end;

var
  OD : TOpenDialog;
...
function TOpenDialog.Execute : Boolean;
var
  szFile	: array[0..MAX_PATH - 1] of Char;
  OFN		: TOpenFileName;
  TempFilter	: String;

  function ExtractLine(const S : String) : String;
  var
    P	: String;
    I	: Integer;
  begin
    for I := 1 to Length(S) do
      if S[i] = '|' then
	P := P + #0
      else
	P := P + S[i];
    Result := P + #0;
  end;

begin
  FillChar(OFN, SizeOf(OFN), 0);
  FillChar(szFile, SizeOf(szFile), 0);

  OFN.lStructSize	:= SizeOf(TOpenFilename);
  OFN.hwndOwner		:= Parent;
  OFN.hInstance		:= hInstance;
  OFN.lpstrTitle	:= PChar(Title);
  TempFilter		:= ExtractLine(Filter);
  OFN.lpstrFilter	:= PChar(TempFilter);
  OFN.lpstrFile		:= szFile;
  OFN.Flags		:= OFN_EXPLORER or OFN_PATHMUSTEXIST or OFN_HIDEREADONLY or OFN_FILEMUSTEXIST or OFN_ENABLEHOOK or OFN_ENABLESIZING;
  OFN.nMaxFile		:= MAX_PATH;

  if (InitialDir = '') then
    OFN.lpstrInitialDir := '.'
  else
    OFN.lpstrInitialDir := PChar(InitialDir);

  Result := GetOpenFileName(OFN);
  if Result then
    FileName := szFile;
end;
...
  OD.Parent     := Wnd;
  OD.Title      := 'Выберите файл';
  OD.Filter     := 'Поддерживаемые форматы (*.png;*.jpg;*.tif;*.gif;*.bmp)|*.bmp;*.jpg;*.jpeg;*.jpe;*.tif;*.tiff;*.png;*.gif|' +
                   'Portable network graphics (*.png)|*.png|' +
                   'JPEG Image File (*.jpg)|*.jpg;*.jpeg;*.jpe|' +
                   'Tagged Image File Format (*.tif|*.tif;*.tiff|' +
                   'CompuServe GIF Image (*.gif)|*.gif|' +
                   'Bitmaps (*.bmp)|*.bmp';
  OD.DefaultExt := '*.*';
...
  if OD.Execute then
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием