全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:970
推到 Plurk!
推到 Facebook!

将IE收藏夹的内容转录到TTreeView中

尚未結案
vclphi
一般會員


發表:28
回覆:39
積分:13
註冊:2003-03-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-29 16:15:59 IP:218.5.xxx.xxx 未訂閱
我在网上看到一篇好文章《怎样将IE收藏夹的内容转录到TTreeView控制中》 要求:在Form中放一个TTreeView (tv_FileName)控制 const IMAGENUM_BOOKCLOSE = 0; //关闭的类型标志 IMAGENUM_BOOKOPEN = 1; //网络地址标志 IMAGENUM_URLPAGE = 2; //打开的类型标志 type TForm1 = class(TForm) tv_FileName: TTreeView; //存放目录或文件名的控件 WebBrowser1: TWebBrowser; ...... procedure TForm1.FF_GetDirFileName(strPath: String; //路径 tvFile:TTreeView); //存放目录或文件名的TTreeView控件 var intRet: Integer; DirInfo: TSearchRec; strIniFile: TIniFile; buffer: String; tnNew: TTreeNode; begin intRet := FindFirst(strPath '\*.*', FaAnyfile, DirInfo); while intRet = 0 do begin if (DirInfo.Name <> '.') and //滤掉 .目录 (DirInfo.Name <> '..') and //滤掉 ..目录 (Pos('.lnk', DirInfo.Name) = 0) and //滤掉 *.lnk文件 (Pos('.ini', DirInfo.Name) = 0) then //滤掉 *.ini文件 begin if (DirInfo.Attr and FaDirectory = FaDirectory) then begin tnNew := tvFile.Items.AddChild(tvFile.Selected, DirInfo.Name); tnNew.Selected := True; tnNew.ImageIndex := IMAGENUM_BOOKCLOSE; //设定分类目录节点的图标 tnNew.SelectedIndex := IMAGENUM_BOOKOPEN; FF_GetDirFileName(strPath '\' DirInfo.Name, tvFile); end else begin buffer := DirInfo.Name; Delete(buffer, Pos('.url', buffer), 4); //滤掉文件名中的 .url //添加名称到 tvFile中 tnNew := tvFile.Items.AddChild(tvFile.Selected, buffer); tnNew.ImageIndex := IMAGENUM_URLPAGE; //设定Web页节点的图标 tnNew.SelectedIndex := tnNew.ImageIndex; //得到URL,并加入到tvURL树中 strIniFile := TIniFile.Create(strPath '\' DirInfo.Name); buffer := strIniFile.ReadString('InternetShortcut','URL',''); strIniFile.Destroy; end; end; intRet := FindNext(DirInfo); end; //重置文件名树tvFile的焦点 if tvFile.Selected <> nil then if tvFile.Selected.Parent <> nil then (tvFile.Selected.Parent).Selected := True else (tvFile.Selected).Selected := False; SysUtils.FindClose(DirInfo); end; procedure TForm1.tv_filenameDblClick(Sender: TObject); var Flags: OLEVariant; begin Flags := 0; WebBrowser1.Navigate(tv_filename.Selected.Text, Flags, Flags, Flags, Flags); end; procedure TForm1.FormCreate(Sender: TObject); var strURLFileName: TFileName; pWinDir:pchar; //windows目录 begin GetMem(pWinDir, 256); GetWindowsDirectory(pWinDir,128); strURLFileName := pWinDir '\Favorites'; FreeMem(pWinDir); //取得收藏夹的内容 FF_GetDirFileName(strURLFileName, tv_FileName); end; 其tv_filename确实能转录IE收藏夹的内容,但tv_filenameDblClick显示“您输入的域名或网址无法访问”我想是由于tv_FileName存放的是目录或文件名,而非存放URL地址,如存放了“雅虎”而不是“www.yahoo.com", 只是tv_filename若存放URL地址,又不像是IE收藏夹。 请问该如何改呢? 發表人 - vclphi 於 2003/05/29 16:18:42
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-29 16:26:51 IP:218.16.xxx.xxx 未訂閱
看程式好像是你自己刪了一段罷 :
引言: //得到URL,并加入到tvURL树中 strIniFile := TIniFile.Create(strPath '\' DirInfo.Name); buffer := strIniFile.ReadString('InternetShortcut','URL',''); strIniFile.Destroy;
這一段 buffer 之後應還會處理資料並把 URL 放到 tvURL 的罷 之後可以用 tv_filename 的 selectedindex / absoluteindex 在 tvURL 找到對應的 URL 來打開網頁罷。
vclphi
一般會員


發表:28
回覆:39
積分:13
註冊:2003-03-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-29 17:24:16 IP:218.5.xxx.xxx 未訂閱
我看到的原文即如此。 看来是少了一段,难道原来Form上有两个TTreeView ,一个放目录或文件名,另一个放URL地址。若如此,这Form可大大的不好看了。或者另一个TTreeView的 Visible:=false; 能不能只放一个TTreeView,存目录或文件名,但也能起作用?
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-29 18:23:36 IP:218.16.xxx.xxx 未訂閱
我想他的 tvURL 是動態建立不 show 出來的 不過其實一個 Tree View 也可以做到 你可參考 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=28046 後面 timhuang 兄的程式碼, 將 URL / 其他資料 放進一個自己定義的 Record 後放在 TreeNode 的 Data 如此便可直接在 選定的 TreeNode 的 Data 去取資料打開網頁了。
系統時間:2024-05-04 20:45:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!