summaryrefslogtreecommitdiff
path: root/importtxt/FileDlgs.pas
diff options
context:
space:
mode:
Diffstat (limited to 'importtxt/FileDlgs.pas')
-rw-r--r--importtxt/FileDlgs.pas131
1 files changed, 0 insertions, 131 deletions
diff --git a/importtxt/FileDlgs.pas b/importtxt/FileDlgs.pas
deleted file mode 100644
index 2257a7a..0000000
--- a/importtxt/FileDlgs.pas
+++ /dev/null
@@ -1,131 +0,0 @@
-unit FileDlgs;
-
-interface
-
-uses windows,m_api;
-
-function OpenDialogExecute(hDlg:hWnd; flg:cardinal; var nFO:integer; const DefExt:string):WideString; //Диалог открытия файла
-function FolderDialogExecute(hdlg:HWND; var nFO:integer; const DefExt:string):WideString; //Диалог выбора папки
-
-implementation
-
-uses shlobj, activex, SysUtils, CommDlg;
-
-function OpenDialogExecute(hDlg:hWnd; flg:cardinal; var nFO:integer; const DefExt:string):WideString; //Диалог открытия файла
-var OpenFilename:TOpenFilenameW;
- TempFilename:WideString;
- Temp1,Temp2:WideString;
- res:bool;
-begin
- nFO:=0;
- FillChar(OpenFileName, SizeOf(OpenFileName), 0);
- with OpenFilename do
- begin
- lStructSize:=SizeOf(OpenFilename);
- hWndOwner:=hDlg;
- Temp1:=
- TranslateWideString('Default extension')+' (*.'+DefExt+')'+#0+'*.'+DefExt+#0+
- TranslateWideString('All files (*.*)')+#0+'*.*'+#0#0;
- lpstrFilter:=PWideChar(Temp1);
- nMaxFile:=MAX_PATH*16;
- SetLength(TempFilename, nMaxFile + 2);
- TempFilename[1]:=#0;
- lpstrFile :=PWideChar(TempFilename);
- Temp2:=TranslateWideString('Choose a file for import...');
- lpstrTitle:=PWideChar(Temp2);
- Flags:=flg or OFN_EXPLORER or OFN_ENABLESIZING or OFN_PATHMUSTEXIST or OFN_FILEMUSTEXIST or OFN_NOCHANGEDIR;
- end;
- res:=GetOpenFileNameW(OpenFileName);
- if res then
- begin
- Result:=TempFilename;
- nFO:=OpenFilename.nFileOffset;
- end
- else Result:='';
-end;
-
-//***Awkward - author of this procedures************
-
-function StrDupW(var dst:PWideChar;src:PWideChar;len:integer=0):PWideChar;
-begin
- if (src=nil) or (src^=#0) then
- dst:=nil
- else
- begin
- if len=0 then
- len:=lstrlenw(src);
- GetMem(dst,(len+1)*SizeOf(WideChar));
- lstrcpynw(dst,src,len+1);
- end;
- result:=dst;
-end;
-
-function SelectDirectory(Caption:PWideChar;var Directory:PWideChar;
- Parent:HWND=0;newstyle:bool=false):Boolean;
-var
- BrowseInfo:TBrowseInfoW;
- Buffer:array [0..MAX_PATH-1] of WideChar;
- ItemIDList:PItemIDList;
- ShellMalloc:IMalloc;
-begin
- Result:=False;
- FillChar(BrowseInfo,SizeOf(BrowseInfo),0);
- if (ShGetMalloc(ShellMalloc)=S_OK) and (ShellMalloc<>nil) then
- begin
- with BrowseInfo do
- begin
- hwndOwner :=Parent;
- pszDisplayName:=Buffer;
- lpszTitle :=Caption;
- ulFlags :=BIF_RETURNONLYFSDIRS;
- end;
- if newstyle then
- if CoInitializeEx(nil,COINIT_APARTMENTTHREADED)<>RPC_E_CHANGED_MODE then
- BrowseInfo.ulFlags:=BrowseInfo.ulFlags or BIF_NEWDIALOGSTYLE;
- try
- ItemIDList:=ShBrowseForFolderW(BrowseInfo);
- Result:=ItemIDList<>nil;
- if Result then
- begin
- ShGetPathFromIDListW(ItemIDList,Buffer);
- StrDupW(Directory,Buffer);
- ShellMalloc.Free(ItemIDList);
- end;
- finally
- if newstyle then CoUninitialize;
- end;
- end;
-end;
-
-//*******************************************************************
-
-function FolderDialogExecute(hdlg:HWND; var nFO:integer; const DefExt:string):WideString; //Диалог выбора папки
-var
- SR: _WIN32_FIND_DATAW;
- hFFF:THandle;
- tpwc:PWideChar;
- tws:WideString;
-begin
- if SelectDirectory(PWideChar(TranslateWideString('Select folder for import...')),tpwc,hdlg,true) then
- begin
- result:=tpwc;
- result:=result+#0;
- nFO:=length(result);
- tws:=tpwc;
- tws:=tws+'\*.'+DefExt;
- SR.dwFileAttributes:=faAnyFile;
- hFFF:=FindFirstFileW(PWideChar(tws),SR);
- if hFFF<>INVALID_HANDLE_VALUE then
- begin
- repeat
- result:=result+SR.cFileName;
- result:=result+#0;
- until not FindNextFileW(hFFF,SR);
- windows.FindClose(hFFF);
- result:=result+#0;
- end;
- end
- else result:='';
-end;
-
-end.