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

如何禁止IE

尚未結案
wzpuma
一般會員


發表:10
回覆:19
積分:5
註冊:2003-02-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-07 11:48:24 IP:218.5.xxx.xxx 未訂閱
我在Form上放了WebBrowser控件和TShellListView控件,希望双击TShellListView后在WebBrowser中打开本机中的 HTML文件,代码如下: procedure TForm1.ShellListView1DblClick(Sender: TObject); var Flags: OLEVariant; begin if ShellListView1.SelectedFolder<>nil then begin Flags := 0; WebBrowser1.Navigate(ShellListView1.SelectedFolder.PathName, Flags, Flags, Flags, Flags); end; end; 不料在WebBrowser1打开HTML文件的同时,又跳出IE。该如何禁止IE多此一举?
wnhoo
高階會員


發表:75
回覆:443
積分:198
註冊:2003-04-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-07 14:30:29 IP:61.155.xxx.xxx 未訂閱
procedure Tindex.open_cmdClick(Sender: TObject); var a,b,c,d:olevariant; begin if opendialog1.Execute then    edit1.text:=opendialog1.FileName;    if opendialog1.FileName<>'' then       webbrowser1.Navigate(opendialog1.filename,a,b,c,d); end;    对WEBBROWER的WebBrowser1NewWindow2  WebBrowser1BeforeNavigate2事件处理一下就可以了。    procedure Tindex.WebBrowser1NewWindow2(Sender: TObject;   var ppDisp: IDispatch; var Cancel: WordBool); var newweb : TWebBrowser; begin //对于WINDOWS2的处理 newweb := TWebBrowser.Create(self); newweb.Align := alClient; newweb.OnNewWindow2 := WebBrowser1NewWindow2; newweb.OnBeforeNavigate2 := WebBrowser1BeforeNavigate2; ppDisp := newweb.DefaultDispatch;    end;    procedure Tindex.WebBrowser1BeforeNavigate2(Sender: TObject;   const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,   Headers: OleVariant; var Cancel: WordBool); begin ; end;    风花雪月 e梦情缘
------
风花雪月 e梦情缘
wzpuma
一般會員


發表:10
回覆:19
積分:5
註冊:2003-02-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-07 15:23:24 IP:218.5.xxx.xxx 未訂閱
加了WebBrowser1NewWindow2 WebBrowser1BeforeNavigate2事件,还是跳出IE。 另外说明一点:就是要用TShellListView控件(因为它好看),不用opendialog控件和TFileListBox控件。若用TFileListBox控件早就没这问题了。
wnhoo
高階會員


發表:75
回覆:443
積分:198
註冊:2003-04-22

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-07 15:33:01 IP:61.155.xxx.xxx 未訂閱
加了WebBrowser1NewWindow2 WebBrowser1BeforeNavigate2事件,还是跳出IE。 另外说明一点:就是要用TShellListView控件(因为它好看),不用opendialog控件和TFileListBox控件。若用TFileListBox控件早就没这问题了。    不论你用TShellListView,还是opendialog控件和TFileListBox控件。其实都一样。就是将文件及存放路径取出来。 我上面提供的方法可以防止弹出窗口的,这些我都试过!!!!    供参考!    风花雪月 e梦情缘
------
风花雪月 e梦情缘
wzpuma
一般會員


發表:10
回覆:19
積分:5
註冊:2003-02-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-07 15:50:59 IP:218.5.xxx.xxx 未訂閱
“这些我都试过!!!!”?不会吧,你试试TShellListView,它就是不一样,双击即启动IE,另外若用TFileListBox控件和opendialog控件,不用WebBrowser1NewWindow2 WebBrowser1BeforeNavigate2事件也没事(即WebBrowser1照常显示 HTML文件,而不会启动IE)。
wnhoo
高階會員


發表:75
回覆:443
積分:198
註冊:2003-04-22

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-07 16:31:44 IP:61.155.xxx.xxx 未訂閱
引言: 我在Form上放了WebBrowser控件和TShellListView控件,希望双击TShellListView后在WebBrowser中打开本机中的 HTML文件,代码如下: procedure TForm1.ShellListView1DblClick(Sender: TObject); var Flags: OLEVariant; begin if ShellListView1.SelectedFolder<>nil then begin Flags := 0; WebBrowser1.Navigate(ShellListView1.SelectedFolder.PathName, Flags, Flags, Flags, Flags); end; end; 不料在WebBrowser1打开HTML文件的同时,又跳出IE。该如何禁止IE多此一举?
你上面的程序,只不过是将ShellListView1.SelectedFolder.PathName的路径取出来,然后在WEBBROWER中显示出列表。这是WEBBROWER调用WIN的资源管理器,你在其中点击相关文件,就如同在资源管理器中的操作一样的!!! 你可以用TSHELLLISTVIEW 其它控件显示文件及名称,然后直接将ShellListView1.SelectedFolder.PathName 文件名的形式给WEBBROWER的NAVIGATE的方法,不就可以实现了吗? 供参考!!!! 风花雪月 e梦情缘
------
风花雪月 e梦情缘
wzpuma
一般會員


發表:10
回覆:19
積分:5
註冊:2003-02-27

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-07 17:27:13 IP:218.5.xxx.xxx 未訂閱
方法虽好,但我一DblClick TShellListView就产生调用WIN的资源管理器的结果,该如何取文件及名称,另外ShellListView1.SelectedFolder.PathName即为路径 名称。
wnhoo
高階會員


發表:75
回覆:443
積分:198
註冊:2003-04-22

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-08 11:16:04 IP:61.155.xxx.xxx 未訂閱
//用这个方法可行,我实验过!!!!    procedure TForm1.ShellListView1DblClick(Sender: TObject); var Flags: OLEVariant; begin Flags := 0;    if ShelllistView1.SelectedFolder<>nil then       WebBrowser1.Navigate(ShelllistView1.SelectedFolder.PathName, Flags, Flags, Flags, Flags)    end;    procedure TForm1.ShellListView1DragDrop(Sender, Source: TObject; X,   Y: Integer); begin if  ShelllistView1.SelectedFolder.SubFolders then ShelllistView1.AutoNavigate :=true else ShelllistView1.AutoNavigate :=false; end;    风花雪月 e梦情缘
------
风花雪月 e梦情缘
wnhoo
高階會員


發表:75
回覆:443
積分:198
註冊:2003-04-22

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-05-08 11:16:21 IP:61.155.xxx.xxx 未訂閱
上面的方法,有不足的。我修改如下:    ShellListView1.Root不能使用rfDesktop等形式,需要使用路径形式。 如 ShellListView1.Root:='c:\';    首先设置 ShellListView1.AutoRefresh :=true; ShellListView1.AutoNavigate:=false;    procedure TForm1.ShellListView1DblClick(Sender: TObject); var Flags: OLEVariant; begin    if not ShellListView1.SelectedFolder.SubFolders then    WebBrowser1.Navigate(ShelllistView1.SelectedFolder.PathName, Flags, Flags, Flags, Flags) else     ShellListView1.Root :=ShelllistView1.SelectedFolder.PathName;    end;    风花雪月 e梦情缘
發表人 - wnhoo 於 2003/05/08 12:48:44
------
风花雪月 e梦情缘
wzpuma
一般會員


發表:10
回覆:19
積分:5
註冊:2003-02-27

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-05-08 16:09:54 IP:218.5.xxx.xxx 未訂閱
照你所言“ShellListView1.Root不能使用rfDesktop等形式,需要使用路径形式”, 问题是解决了。但ShellListView1.Root使用路径形式有很大缺陷,如指定 ShellListView1.Root:='c:\';则无法切换到其他目录。不知能否用修改ShellTreeView的属性使之回到上一层目录? 若ShellListView1.Root使用rfDesktop形式,运行时又常会出错(如DblClick *.DOC文件)。 HELP中咋没有ShellTreeView和ShellListView?
wnhoo
高階會員


發表:75
回覆:443
積分:198
註冊:2003-04-22

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-05-08 16:34:12 IP:61.155.xxx.xxx 未訂閱
ShellListView1.Root 你可以使用指定路径来返回到上一层的,但只能到达盘符为最上级了,不能到达我的电脑。    我想你还是采用其它方法实现吧,用ShellListView我试验了好长时间,都不能完全实现。    风花雪月 e梦情缘
------
风花雪月 e梦情缘
wzpuma
一般會員


發表:10
回覆:19
積分:5
註冊:2003-02-27

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-05-09 17:27:41 IP:218.5.xxx.xxx 未訂閱
ShellListView确实不好用,谢了。
系統時間:2024-05-10 2:35:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!