来自:歪就歪, 时间:2000-3-30 9:00:00, ID:208146 [显示:小字体 | 大字体]
一个程序,里面有个TWebBrowser,里面显示的HTML里有个Button,如何
才能让程序知道那个Button被Click的事件呢?
我尝试用TWebModule,但编着编着,觉得路子走歪了,好象这东西是做CGI
程序用的,也就是说,它可能非要个Internet Server才能运行,不知道是
不是这样?
那么,我怎么样才能让程序知道,它里面的TWebBrowser里的HTML里的某一个
Button被Click了呢?
如果可能,请给代码。
来自:DreamTiger, 时间:2000-3-30 13:56:00, ID:208402
搞定!
e:/temp/1.htm为:
《p》
《input type="button" value="Button1" name="B1" onclick="location='b1.htm'"》
《input type="button" value="Button2" name="B2" onclick="location='b2.htm'"》
《input type="button" value="Button3" name="B3" onclick="location='b3.htm'"》
《input type="button" value="Button4" name="B4" onclick="location='b4.htm'"》
《/p》
程序:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, OleCtrls, SHDocVw,MSHtml;
type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
public
bLoaded:boolean;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure cancelLink;
begin
ShowMessage('Click');
end;
//调入需要的页面
procedure TForm1.Button1Click(Sender: TObject);
begin
bLoaded := false;
WebBrowser1.Navigate('file://e:/temp/1.htm');
bLoaded := true;
end;
//检查调入的页面
procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
var
sUrl:string;
begin
if bLoaded then //如果bLoaded = false,表示是正常程序调入页面
begin
//bLoaded = true,是用户单击Button进行浏览。
sUrl := String(URL);
//可以根据sUrl来判断用户点击了那个Button。
//也可以根据sUrl来判断是否应该继续浏览页面
//这里假设页面只有button,不再继续浏览。
Cancel := true;
ShowMessage(sUrl);
end;
end;
end.
来自:DreamTiger, 时间:2000-3-30 13:57:00, ID:208404
哦,那个procedure cancelLink;
是上午实验的时候留下的,没用的。
来自:y9y, 时间:2000-3-30 22:29:00, ID:208767
DreamTiger:
Sorry, can not speak chinese now. But my comment to your code with PinYin:
Jue(2) Le(4)
Thanks, it is what I want as far as I test.