procedure TForm2.BtSelectPathClick(Sender: TObject)
var
strCaption,strDirectory:String
wstrRoot:WideString
begin
strCaption:='这是浏览文件夹的说明文字,可以根据需要进行书写。'
+#13#10+'一般二行文字就满了。'
//该参数是浏览文件夹窗口的显示说明部分
wstrRoot:=''
//这个参数表示所显示的浏览文件夹窗口中的根目录,默认或空表示“我的电脑”。
SelectDirectory(strCaption,wstrRoot,strDirectory)
EdLocalPath.Text:=strDirectory
end
第二种方法
要求:利用Win32 API SHBrowseForFolder开启一个选择文件目录的对话框,预先定位到默认的目录,最后返回所选择的结果,如果没有进行选择(即单击“取消”结束选择)则返回空''。
代码如下:(以下两个函数定义需要键竖握在uses中引入两个单元ShlObj,Windows)
function BrowseCallbackProc(Wnd: HWNDuMsg: UINTlParam, lpData: LPARAM): Integer stdcall
begin
case uMsg of
BFFM_INITIALIZED: SendMessage(Wnd, BFFM_SETSELECTION, 1, lpData)
end
Result := 0
end
function BrowsFolder(const Folder: string): string
var
TitleName: string
lpItemID: PItemIDList
BrowseInfo: TBrowseInfo
DisplayName: array[0..MAX_PATH] of char
TempPath: array[0..MAX_PATH] of char
begin
Result := Folder
FillChar(BrowseInfo, sizeof(TBrowseInfo), #0)
BrowseInfo.hwndOwner := GetActiveWindow
BrowseInfo.pszDisplayName := @DisplayName
TitleName := '请选择一个目录'
BrowseInfo.lpszTitle := PChar(TitleName)
BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS
BrowseInfo.lpfn := BrowseCallbackProc
BrowseInfo.lParam := Integer(PChar(Folder))
lpItemID := SHBrowseForFolder(BrowseInfo)
if Assigned(lpItemId) then
begin
SHGetPathFromIDList(lpItemID, TempPath)
GlobalFreePtr(lpItemID)
Result := string(TempPath)
end
else
Result:=''
end
函数稿庆BrowsFolder是主体,传入参数即默认的目录,返回值即选择的结果。
BrowseCallbackProc是由SHBrowseForFolder执行时需要的回调(Call Back)函数纤消。在这个函数中,截取了BFFM_INITIALIZED消息,在目录选择对话框初始化的时候,向对话框发送一个BFFM_SETSELECTION消息,选中默认的目录。
用文件关联来实现呀!比如安装了office后,后缀是.doc的文件会和word关联在一起,双击这个文件,就会用word来打开。如果想自己创建关联关系,就必须从注册表入手。给你一个例子,你改一下就可以了。
下面的代码会把后缀是.me的文件和Notepad关联在一起:
procedure TForm1.Button1Click(Sender: TObject)
var
lphKey: HKEY
sKeyName: string
sKeyValue: string
begin
sKeyName := 'ReadMeFile'
sKeyValue := '说明文档'
RegCreateKey(HKEY_CLASSES_ROOT, pchar(sKeyName), lphKey)
RegSetValue(lphKey, '', REG_SZ, pchar(sKeyValue), 0)
sKeyName := '.me'
sKeyValue := 'ReadMeFile'
RegCreateKey(HKEY_CLASSES_ROOT, pchar(sKeyName), lphKey)
RegSetValue(lphKey, '', REG_SZ, pchar(sKeyValue), 0)
sKeyName := 'ReadMeFile'
sKeyValue := 'c:\Win95\NotePad.exe %1'{ 注意路径 }
RegCreateKey(HKEY_CLASSES_ROOT, pchar(sKeyName), lphKey)
RegSetValue(lphKey, 'shell\open\command', REG_SZ,
pchar(sKeyValue), MAX_PATH)
end
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)