
06.12.2012, 22:20
|
 |
.
|
|
Регистрация: 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 в.д.
|