to cozo:
不可能吧,怎么我这里全不对??????
我真搞不清楚????
我把愿代码贴出来让你们看看
procedure TfrmMain.SetLinkBarMenu(mniMenu:TMenuItem;strPath:AnsiString;
tlbLinks:TToolBar);
var
srLinkFile:TSearchRec; //搜索的变量
IniFile:TIniFile; //读取文件(特殊格式文件)
iFound:integer; //查找到文件
iCount:integer; //子文件数目
tmpMenu:TMenuItem; //临时子菜单
mniOpenAll:TMenuItem; //打开所有下面菜单的连接
mniLine:TMenuItem; //添加线菜单
mniEmpty:TMenuItem; //添加空菜单(如果文件夹下面没有文件)
strCaption:AnsiString; //读取的文件名称作为菜单名称
strCaptionURL:AnsiString; //得到LinkBar中的菜单的数据
strHint:AnsiString; //得到提示信息
strURL:AnsiString; //读取到文件中URL的地址
FileInfo:TSHFileInfo; //读取文件相关的信息
iEnterPos:integer; //回车符的位置
i:integer; //循环使用
bHave:boolean; //查询在LinkBar中是否已经有了的数据项
begin
//设置链接栏右边的下拉菜单
try
iCount:=0;
iFound:=FindFirst(strPath+'*.*',faDirectory,srLinkFile); //查找目录
while iFound=0 do
begin
if not((CompareStr(srLinkFile.Name,'.')=0) or
(CompareStr(srLinkFile.Name,'..')=0)) then
begin //不是.和..的目录
if ((srLinkFile.Attr and faDirectory)=srLinkFile.Attr) then
begin
IniFile:=TIniFile.Create(strPath+srLinkFile.Name);
strURL:=IniFile.ReadString('InternetShortcut','URL','');
strCaption:=srLinkFile.Name;
IniFile.Free;
bHave:=false; //判断加入的菜单是否在LinkBar中已经有了
for i:=0 to tlbLinks.ButtonCount-1 do
begin
iEnterPos:=Pos(#13,tlbLinks.Buttons
.Hint); <red>这里就是我要的东西</red>[!][!]
if(strCaption=Copy(tlbLinks.Hint,1,iEnterPos-1)) then
bHave:=true;
end;
if(bHave=false) then //没有加进来
begin
if (Length(strCaption)>30) then
strCaption:=Copy(strCaption,1,30)+'...';
tmpMenu:=TMenuItem.Create(Self);
tmpMenu.Caption:=strCaption;
tmpMenu.Hint:=strURL;
tmpMenu.Tag:=0; //文件夹
tmpMenu.AutoHotKeys:=maManual;
ilLinkBarMenu.Handle:=ShGetFileInfo(PCHAR(strPath+srLinkFile.Name),
0,FileInfo,SizeOf(FileInfo),SHGFI_SMALLICON or SHGFI_SYSICONINDEX
or SHGFI_TYPENAME);
tmpMenu.SubMenuImages:=ilLinkBarMenu;
tmpMenu.ImageIndex:=FileInfo.iIcon;
mniOpenAll:=TMenuItem.Create(Self);
mniOpenAll.Caption:='Open all Links';
mniOpenAll.Tag:=1; //表明是打开所有菜单
mniOpenAll.AutoHotkeys:=maManual;
mniOpenAll.OnClick:=MenuItemClick;
tmpMenu.Add(mniOpenAll);
mniLine:=TMenuItem.Create(Self);
mniLine.Caption:='-';
mniLine.Tag:=2; //为0不可以打开
mniLine.AutoHotkeys:=maManual;
mniLine.OnClick:=MenuItemClick;
tmpMenu.Add(mniLine);
mniMenu.Add(tmpMenu);
Inc(iCount);
SetLinkBarMenu(tmpMenu,strPath+srLinkFile.Name+'/',tlbLinks);
end;
end;
end;
iFound:=FindNext(srLinkFile);
end;
iFound:=FindFirst(strPath+'*.*',faArchive+faReadOnly+faHidden+
faSysFile+faVolumeID,srLinkFile); //查找不是目录的文件
while iFound=0 do
begin
IniFile:=TIniFile.Create(strPath+srLinkFile.Name);
strURL:=IniFile.ReadString('InternetShortcut','URL','');
IniFile.Free;
strCaption:=Copy(srLinkFile.Name,1,Length(srLinkFile.Name)-4);
strHint:=strCaption+'#13';
strHint:=strHint+strURL;
bHave:=false; //判断加入的菜单是否在LinkBar中已经有了
for i:=0 to tlbLinks.ButtonCount-1 do
begin
iEnterPos:=Pos(#13,tlbLinks.Buttons.Hint); <red>这里就是我要的东西</red>[!][!]
if(strCaption=Copy(tlbLinks.Hint,1,iEnterPos-1)) then
bHave:=true;
end;
if(bHave=false) then //没有加进来
begin
if (Length(strCaption)>30) then
strCaption:=Copy(strCaption,1,30)+'...';
tmpMenu:=TMenuItem.Create(Self);
tmpMenu.Caption:=strCaption;
tmpMenu.Hint:=strHint;
tmpMenu.Tag:=3; //不是文件夹
tmpMenu.AutoHotKeys:=maManual;
ilLinkBarMenu.Handle:=ShGetFileInfo(PCHAR(strPath+srLinkFile.Name),
0,FileInfo,SizeOf(FileInfo),SHGFI_SMALLICON or SHGFI_SYSICONINDEX
or SHGFI_TYPENAME);
tmpMenu.SubMenuImages:=ilLinkBarMenu;
tmpMenu.ImageIndex:=FileInfo.iIcon;
tmpMenu.OnClick:=MenuItemClick;
mniMenu.Add(tmpMenu);
end;
iFound:=FindNext(srLinkFile);
inc(iCount);
end;
if(iCount=0) then
begin
mniEmpty:=TMenuItem.Create(Self);
mniEmpty.Caption:='Empty';
mniEmpty.Enabled:=false;
mniEmpty.Tag:=4;
mniEmpty.AutoHotkeys:=maManual;
mniEmpty.OnClick:=MenuItemClick;
mniMenu.Add(mniEmpty);
end;
except
IniFile.Free;
end;
end;