"浏览文件夹"对话框的显示问题

swlove 2007-02-09 12:46:37
procedure TForm1.Button1Click(Sender: TObject);
var
bi: TBrowseInfo;
pidl: pItemIdList;
strpath, displayname: string;
begin
SetLength (displayname, 100);
bi.hwndOwner := Handle;
bi.pidlRoot := nil;
bi.pszDisplayName := pChar (displayname);
bi.lpszTitle := '请选择文件夹'#13#10#10'一般是在**下';
bi.ulFlags := $0008;
bi.lpfn := nil;
bi.lParam := 0;
bi.iImage := 0;
pidl := SHBrowseForFolder(bi);
SetLength (strPath, 100);
ShGetPathFromIdList (pidl, PChar(strPath));
end;

上面代码运行后bi.lpszTitle的显示有问题, 换行后的"一般是在**下"已经被List挡住了. 请问,怎样才能正常显示 ?? 可不可以把那List移下一点 ,这样就可以了?
...全文
306 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
swlove 2007-02-10
  • 打赏
  • 举报
回复
唉,没办法,这是我最后10分,世道艰难啊

不用TBrowseInfo了,用TShellTreeView自己画个算了

谢谢你

结帐...
SonicX 2007-02-10
  • 打赏
  • 举报
回复
10分啊
关键代码
bi.lpfn := nil;
改为
bi.lpfn := @BrowseCallbackProc;

BrowseCallbackProc过程
function BrowseCallbackProc(hwnd: HWND; uMsg: UINT; lParam: LPARAM; lpData: LPARAM): Integer; stdcall;
begin
if uMsg=BFFM_INITIALIZED then
SetWindowPos(GetDlgItem(hwnd,2),0,230,90,0,0,SWP_NOZORDER or SWP_NOSIZE);
//你要查下文字框的ID,修改这里GetDlgItem(hwnd,2)
end if
Result := 0
end;
swlove 2007-02-09
  • 打赏
  • 举报
回复
用SelectDirectory初始它弹出对话框的位置还要麻烦一次...

而且我的问题是, 在说明文字那里,经过两次换行后,文字被下面的ListBox挡住了,有什么能够正

常显示,即使用SelectDirectory也是一样

谢谢
swlove 2007-02-09
  • 打赏
  • 举报
回复
可以给出具体例子吗 ?
lihuasoft 2007-02-09
  • 打赏
  • 举报
回复
你改用SelectDirectory函数吧,很方便。

把下面的代码拷到你的工程里试验一下:

uses FileCtrl; //引用这个单元

var
Dir : string;
begin
if SelectDirectory('请选择一个目录', '', Dir) then
ShowMessage('您选择的目录是:' + Dir);
end;
SonicX 2007-02-09
  • 打赏
  • 举报
回复
用回调钩子获得窗口句柄,修改下文字框位置

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧