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

Описание GetOpenFileName в качестве объекта и заполнение ListView. С ListBox-ом аналогично.

в юните
Код:
type
  TFileName        = type String;
  TOpenDialog      = Object
    Parent         : HWND;
    FileName       : TFileName;
    Filter         : String;
    DefaultExt     : String;
    Title          : String;
    InitialDir     : String;
    Files          : TStringList;
    function Execute : Boolean;
  end;
...
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;
В программе
Код:
var
  OD : TOpenDialog;
...
  OD.Parent := Wnd;
  OD.Title  := 'Open file(s)';
  OD.Filter := 'Playable files|*.mo3;*.xm;*.mod;*.s3m;*.it;*.mtm;*.umx;*.mp3;*.mp2;*.mp1;*.ogg;*.wav;*.aif|' + 
		   'AIFF - aif|*.aif|' + 
		   'Modules - mo3/xm/mod/s3m/it/mtm/umx|*.mo3;*.xm;*.mod;*.s3m;*.it;*.mtm;*.umx|' + 
		   'Ogg Vorbis - ogg|*.ogg|' +
		   'MPEG - mp3/mp2/mp1|*.mp3;*.mp2;*.mp1|' +
		   'WAVE - wav|*.wav|' +
		   'All files|*.*';
  OD.DefaultExt := '*.*';
  OD.Options	:= [ofHideReadOnly, ofPathMustExist, ofFileMustExist, ofOldStyleDialog, ofEnableSizing];
...
  // Диалог открытия файла
  if OD.Execute then
  begin
    // заполняем ListView
    for I := 0 to OD.Files.Count - 1 do
      with ListView.Items.Add do
      begin
        Caption := IntToStr(I + ListView.Items.Count);
        SubItems.Add(OD.Files.Strings[i]);
      end;
  end;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием