格式

Delphi syntax:

On Windows:

function SelectDirectory(const Caption: string; const Root: WideString; out Directory: string): Boolean;

On Linux:

function SelectDirectory(const Caption: WideString; const Root: string; var Directory: string; ShowHidden: Boolean = False): Boolean;

SelectDirectory弹出对话框让用户选择目录,不改变目录的键值,在linux和windows中格式有所不同,

caption标题是长字符串

const Root指定浏览的根目录

out Directory返回所选目录

ShowHidden标识所选目录是否显示隐藏子目录

例:

uses FileCtrl;

const

SELDIRHELP = 1000;

procedure TForm1.Button1Click(Sender: TObject);

var

Dir: string;

begin

Dir := 'C:\MYDIR';

if SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt],SELDIRHELP) then

Label1.Caption := Dir;

end;

由于显示的对话框不是居中显示 重新定义函数在程序中

uses

ShlObj,   ActiveX;   //必须的控件包

function   SelectDirectory(const   Caption:   string;   const   Root:   WideString;

OwnerWindow:   THandle;   out   Directory:   string):   Boolean;

var

WindowList:   Pointer;

BrowseInfo:   TBrowseInfo;

Buffer:   PChar;

RootItemIDList,   ItemIDList:   PItemIDList;

ShellMalloc:   IMalloc;

IDesktopFolder:   IShellFolder;

Eaten,   Flags:   LongWord;

begin

Result   :=   False;

Directory   :=   '';

FillChar(BrowseInfo,   SizeOf(BrowseInfo),   0);

if   (ShGetMalloc(ShellMalloc)   =   S_OK)   and   (ShellMalloc   <>   nil)   then

begin

Buffer   :=   ShellMalloc.Alloc(MAX_PATH);

try

RootItemIDList   :=   nil;

if   Root   <>   ''   then

begin

SHGetDesktopFolder(IDesktopFolder);

IDesktopFolder.ParseDisplayName(Application.Handle,   nil,

POleStr(Root),   Eaten,   RootItemIDList,   Flags);

end;

with   BrowseInfo   do

begin

hwndOwner   :=   OwnerWindow;

pidlRoot   :=   RootItemIDList;

pszDisplayName   :=   Buffer;

lpszTitle   :=   PChar(Caption);

ulFlags   :=   BIF_RETURNONLYFSDIRS;

end;

WindowList   :=   DisableTaskWindows(0);

try

ItemIDList   :=   ShBrowseForFolder(BrowseInfo);

finally

EnableTaskWindows(WindowList);

end;

Result   :=     ItemIDList   <>   nil;

if   Result   then

begin

ShGetPathFromIDList(ItemIDList,   Buffer);

ShellMalloc.Free(ItemIDList);

Directory   :=   Buffer;

end;

finally

ShellMalloc.Free(Buffer);

end;

end;

end;

调用例子:

procedure   TForm1.Button1Click(Sender:   TObject);

var

vDirectory:   string;

begin

SelectDirectory('Select   Path',   '',   Handle,   vDirectory); //此处handle即是窗口位置句柄

end;

http://www.cnblogs.com/dashan9zj/archive/2009/01/19/1378289.html

SelectDirectory使用方法以及EnableTaskWindows的更多相关文章

  1. javaSE27天复习总结

    JAVA学习总结    2 第一天    2 1:计算机概述(了解)    2 (1)计算机    2 (2)计算机硬件    2 (3)计算机软件    2 (4)软件开发(理解)    2 (5) ...

  2. mapreduce多文件输出的两方法

    mapreduce多文件输出的两方法   package duogemap;   import java.io.IOException;   import org.apache.hadoop.conf ...

  3. 【.net 深呼吸】细说CodeDom(6):方法参数

    本文老周就给大伙伴们介绍一下方法参数代码的生成. 在开始之前,先补充一下上一篇烂文的内容.在上一篇文章中,老周检讨了 MemberAttributes 枚举的用法,老周此前误以为该枚举不能进行按位操作 ...

  4. IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法

    直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...

  5. 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例

    前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...

  6. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  7. ArcGIS 10.0紧凑型切片读写方法

    首先介绍一下ArcGIS10.0的缓存机制: 切片方案 切片方案包括缓存的比例级别.切片尺寸和切片原点.这些属性定义缓存边界的存在位置,在某些客户端中叠加缓存时匹配这些属性十分重要.图像格式和抗锯齿等 ...

  8. [BOT] 一种android中实现“圆角矩形”的方法

    内容简介 文章介绍ImageView(方法也可以应用到其它View)圆角矩形(包括圆形)的一种实现方式,四个角可以分别指定为圆角.思路是利用"Xfermode + Path"来进行 ...

  9. JS 判断数据类型的三种方法

    说到数据类型,我们先理一下JavaScript中常见的几种数据类型: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Functi ...

随机推荐

  1. discuz二次开发笔记(一)------$_G全解析

    $_G 保存了 Discuz! 中所有的预处理数据缓存能够很好的提高程序的性能,一些配置数据没必要每次都查询数据库,只要在修改了的时候更新下缓存即可.Discuz! 中所有的缓存保存在 $_G[cac ...

  2. 【转】Python中执行cmd的三种方式

    原文链接:http://blog.csdn.net/menglei8625/article/details/7494094 目前我使用到的python中执行cmd的方式有三种: 1. 使用os.sys ...

  3. 获得easyUi dialog 对话框title的属性值

    <div id="dlg" class="easyui-dialog" title="Toolbar and Buttons" sty ...

  4. Datagridview控件实现分页功能

    可以进行sql语句进行设置:      1.先新建一个窗体,一个DataGridView控件.两个label控件.两个Button控件   2.代码如下: using System; using Sy ...

  5. centos6.5图形界面NetworkManager 配置ip文件位置

    请教一个关于网络配置的问题,如图:该网络连接图形界面中 有2个配置,其中System eth0 有对应的配置文件/etc/sysconfig/network-scripts/ifcfg-eth0,但是 ...

  6. Criteria 和 DetachedCriteria的区别与使用(转)

    转自:http://javapub.iteye.com/blog/1149709 Criteria 和 DetachedCriteria 的主要区别在于创建的形式不一样, Criteria 是在线的, ...

  7. 重新关联bat文件的打开方式为系统默认方式

    为什么“BAT”扩展名的默认打开方式:显示出来的居然是“%1”这么一个怪异的东东,具体在什么位置的? c:\windowssystem32\command.com修复bat关联,打开command.c ...

  8. Annotation 与 HttpClient(5)--Annotation HttpClient

    Annotation HttpClient 本内容不保证正确性,如有问题请及时提出 经过前面四篇博客的铺垫,现在给出带有标记的HttpClient的实现. 1.     带标记的HttpClient的 ...

  9. android 百度地图定位功能实现

    历经几天时间,终于把定位功能给实现了,可谓是费劲千辛万苦啊,有定位知识还有图层知识,在这里我把代码给大家贴出来,一起分享一下下啦. package com.example.foreveross.off ...

  10. Productivity Improvements for the Entity Framework(实体框架设计)【转】

    Background We’ve been hearing a lot of good feedback on the recently released update to the Entity F ...