我记得有专门的选择路径的Windows公共创体,只是调用方法忘记了
解决方案 »
- Delphi中这些代表什么啊?这是我在一个获取系统托盘图标的程序中看到的,Shell_TrayWnd, TrayNotifyWnd, SysPager, ToolbarWindow32
- sizeof(integer)
- 一个很简单的问题,但就是不能解决啊
- 这样的情况你们是如何处理的?
- 使用cxGrid控件的应用程序中,动态析构TcxGridDBTableView的对象问题?!
- 关于 FILTER='时间>='''+qstart+''' and 时间<='''+q_end+'''' 的写法的问题
- 如何在控件的CAPTION中显示特殊格式的字符
- 我建立一个多窗体程序,最前一个是父窗体,其余的是子窗体,但是子窗体Close不了,
- delphi高手做得一个软件,大家参考参考吧。(delphi5.0)http://www.csdn.net/soft/openfile.asp?kind=1&id=14192
- 这是TADOQUERY的一个BUG吗?
- 存储过程的问题。
- 挑战,113分
Label1.Caption :=OpenDialog1.FileName ;
uses FileCtrl;
var
dir: string;
SelectDirectory(窗口标题, '桌面',dir )
然后dir中就是你选择的路径,
1. 在你的Project里增加一个BorderStyle为bsDialog的新窗体;
2.放置一个DirectoryListBox组件;
3. 放置一个DriveComboBox组件,设置DirList为DirectoryListBox1;
4.然后再放上两个Button。一个“确定”(ModalResult为mrOk),一个“取消”(ModalResult为mrCancel);
5.最后只要在调用这个浏览文件夹的地方加上一下代码就算大功告成了:
if Form2.ShowModal = mrOk then
Memo1.Lines.Add(Form2.DirectoryListBox1.Directory);
(二)第二种方法,在Delphi中可以通过调用SelectDirectory函数得到这种效果。
SelectDirectory在Delphi 4中的申明如下(请注意,一共有两个重载的申明):
type
TSelectDirOpt = (sdAllowCreate, sdPerformCreate, sdPrompt);
TSelectDirOpts = set of TSelectDirOpt;
function SelectDirectory(var Directory: string;
Options: TSelectDirOpts; HelpCtx: Longint): Boolean; overload;
function SelectDirectory(const Caption: string; const Root:WideString; out Directory: string): Boolean; overload;
第一种语法的Options参数指定了“浏览文件夹”对话框的一些选项;参数HelpCtx指定上下文敏感的Help ID;Directory初始化了对话框的值,并且携带返回值。
第二种语法的Caption参数指定对话框标题(比如′请选择XXX的文件夹′);参数Root指定用来浏览的根目录;所选择文件夹返回在参数Directory中。
不管是哪种语法,如果在对话框中选择了路径并按下“确定”按钮,SelectDirectory函数返回True;在其它情况下,函数SelectDirectory就返回False。
(三)第三种方法是比较高明的解决方案。在Windows中已经有一个专门用来处理这种问题的ShellAPI函数——SHBrowseForFolder(事实上,第二种方法的第二种语法就是调用了这个API,这在Delphi的源代码中可以得到证实)。因为它是使用系统已有的API,这样就不会占用太多的系统资源,从而减小代码长度、提高程序运行速度,并且在Windows的不同语言版本中会自动的和Windows相适应。具体代码如下:
var
Info: TBrowseInfo;
Dir: array[0..260] of char;
ItemId: PItemIDList;
begin
with Info do
begin
hwndOwner := self.Handle;
pidlRoot := nil;
pszDisplayName := nil;
lpszTitle := ′请选择XXX的文件夹′;
ulFlags := 0;
lpfn := nil;
lParam := 0;
iImage := 0;
end;
ItemId := SHBrowseForFolder(Info);
if ItemId <> nil then
begin
SHGetPathFromIDList(ItemId, @Dir);
Result := string(Dir);
end
else
Result := ′′;
end