请教一个简单的问题,关于目录选择对话框。(100分)

  • 主题发起人 叮叮当当
  • 开始时间
To: aizb
TBrowseInfo、POleStr、SelectDirCB、……是定义在哪个单元里的啊?要use哪些啊?急啊。。。
 
可以自己画一个树
 
To: stuwei
拜托,请不要这样好吗?
 
ShlObj单元!
还有一个 IMalloc在ActiveX单元!
 
To: aizb
差不多了,编译提示还有一个SelectDirCB函数未定义,在哪个单元?
 
function SelectDirCB(Wnd: HWND; uMsg: UINT; lParam, lpData: LPARAM): Integer stdcall;
begin
if (uMsg = BFFM_INITIALIZED) and (lpData <> 0) then
SendMessage(Wnd, BFFM_SETSELECTION, Integer(True), lpdata);
result := 0;
end;
 
我靠,选个目录还要这么干啊,就是LeeChange的方法。
SelectDirectory有两种显示风格,一种win31的,一种是win95的。
下面这个风格是win95的。
var
starget : string;
begin
if SelectDirectory('请选择目录','',starget) then
edttarget.text := starget;
end;
 
你可以新建一個包,再加進去安裝
也可以安裝到delphi自帶的dclusr.dpk

關于"可编译时提示缺少DsgnIntf.dcu,无法完成编译。"
由于這個控件是for D5的,D5已不支持DsgnIntf了
一個解決方法:

打开要安装的 dpk 文件,在 Package 管理器中点 Options 按钮,或菜单 Project|Options
在 Project Options 对话框中切换到 "Directories/Conditionals" 页,在 "Search Path"
一栏中加上 "$(DELPHI)/Source/ToolsAPI" 这个目录,或在 Package 的 "Requires" 小节
中加入"designide.dcp"(在 Delphi6 的 Lib 目录下)这个文件.
两中方法应该都可以.
 
叮叮当当 ,我可不是开玩笑
同事做这个对话框不知道有SelectDirectory函数
他自己画了一个文件结构树
你如果不信我可以把源代码给你看
 
赞同:YoungSun
var
s:string;
begin
if SelectDirectory('选择工作目录','',s) then
begin
end;
end;
其实D6里面已经封装了SHBrowseForFolder资源管理器的空间 samples页上的&&,使用很简单的
 
OpenDialog控件
 
没错,我Copy这段源码就是SelectDirectory的第二种用法的源码,它在FileCtrl单元中.
你研究一下可以在对话框中加上自己的控件的.
 
uses ShlObj;
procedure TForm1.Button1Click(Sender: TObject);
var
bi:TBrowseInfo;
begin
bi.hwndOwner:=Handle;
bi.pidlRoot:=nil;
bi.pszDisplayName:=PChar(GetCurrentDir);
bi.lpszTitle:='请选择一个对话框:';
bi.ulFlags:=1;
SHBrowseForFolder(bi);
end;
 
To: vine
我打开要安装的 dpk 文件,在 Package 管理器中点 Options 按钮,切换到 "Directories/Conditionals" 页,在 "Search Path"
一栏中加上 "$(DELPHI)/Source/ToolsAPI" 这个目录,或在 Package 的 "Requires" 小节
中加入"designide.dcp"(在 Delphi6 的 Lib 目录下)这个文件.两种方法都试过了。

第一种方法没用,ToolsAPI目录下根本找不到DsgnIntf.*,只有DesignIntf.pas,我把源代码里的uses DsgnIntf改成uses DesignIntf,可惜编译不通过,提示某某未定义……

第二种方法,我在添加加载的Package时在Delphi6/Lib目录下根本找不到designide.*

唉。。。
 
顶楼的,YoungSun说得很对。
 
SelectDirectory这种对话框不能改变大小,也不能新建文件夹,也不能指定目录。
 
To: chemer
是呀,我正在愁SelectDirectory不能指定对话框位置以及默认目录。
你有办法么?或者需要用什么控件?
 
兩種方法可以安裝這個控件:
1)在DirDialog單元文件的uses里用DesignIntf,DesignEditors把DsgnIntf替換。
  在你安裝到的包里的require里加入designide.dcp(lib目錄下),這樣應該可以
  安裝了。
2)從D5中把DsgnIntf.dcu COPY到D6 lib目錄,也可以安裝。

不過上述的方法安裝好還有點問題
就是,在新建一個工程加入這個控件時,
會提示DesignIntf.dcu not found
無論你把ToolApi加入searchPath還是有新的錯

這樣應該打開project->options->packags
選中build runtime packages 加入designide.dcp
這樣工程就可以運行了。
只不過在發布時需要分發運行時期包而已 :(
 
谢谢大家了![:)]
 
顶部